LeNet-5

简介

LeNet-5是一个用来识别手写数字的最经典的卷积神经网络,是Yann LeCun在1998年设计并提出的。Lenet的网络结构规模较小,但包含了卷积层、池化层、全连接层,他们都构成了现代CNN的基本组件。

网络结构

LeNet-5共有7层,有2个卷积层、2个下抽样层(池化层)、3个全连接层。

INPUT层-输入层

首先是数据 INPUT 层,输入图像的尺寸统一归一化为32*32。

C1层-卷积层

  • 输入图片:32x32
  • 卷积核大小:5x5
  • 卷积核种类:6
  • 输出:28x28x6
  • 可训练参数:(5x5+1) x 6 = 156
  • 连接数:(5x5+1)x6x28x28 = 122304

S2层-池化层(下采样层)

  • 输入:28x28x6
  • 采样区域:2x2
  • 采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置,结果通过sigmoid函数
  • 采样种类:6
  • 可训练参数:6x2 =12
  • 输出:14x14x6
  • 连接数:(2x2+1)x6x14x14 = 5880

C3层-卷积层

  • 输入:S2中所有6个或者几个特征map组合
  • 卷积核大小:5x5
  • 卷积核种类:16
  • 输出featureMap大小:10x10x16

C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合 存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。

  • 可训练参数:6x(3x5x5+1)+6x(4x5x5+1)+3x(4x5x5+1)+1x(6x5x5+1)=1516
  • 连接数:10x10x1516=151600

C3与S2中前3个图相连的卷积结构如下图所示:

采取这种方式的原因:

  • 降低参数量,也就是减轻算力负担。
  • 打破对称性,学习特征图的(希望构成互补的)不同子集。

S4层-池化层(下采样层)

  • 输入:10x10x16
  • 采样区域:2x2
  • 采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置,结果通过sigmoid函数
  • 采样种类:16
  • 可训练参数:16x2 =32
  • 输出:5x5x16
  • 连接数:16x(2x2+1)x5x5=2000

C5层-卷积层

  • 输入:5x5x16
  • 卷积核大小:5x5
  • 卷积核种类:120
  • 输出:1x1x120
  • 可训练参数:120x(16x5x5+1)=48120
  • 连接数:120x(16x5x5+1)=48120

F6层-全连接层

  • 输入:120
  • 计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过tanh函数
  • 输出:84
  • 可训练参数:84x(120+1)=10164
  • 连接数:84x(120+1)=10164

F6层有84个节点,对应于一个7x12的比特图,-1表示白色,1表示黑色,这样每个符号的比特图的黑白色就对应于一个编码。
ASCII编码图如下:

Output层-全连接层

  • 输入:84
  • 可训练参数:84x(10+1)=850
  • 输出:10
  • 连接数:84x(10+1)=850

Output层也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i
采用的是径向基函数(RBF)的网络连接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:

\[y_{i}=\sum_{j}\left(x_{j}-w_{i j}\right)^{2} \]

上式的值由i的比特图编码确定,i从0到9,j取值从0到7*12-1。
RBF输出的值越接近于0,则越接近于i,即越接近于i的ASCII编码图,表示当前网络输入的识别结果是字符i。

示例:

总结

  • 卷积核的大小为 5x5,步长为(1,1)。
  • 池化核的大小为 2x2,步长为(2,2)这里并没有提出池化层的概念而是称之为下采样层。
  • 全连接层的输出维度分别是:120,84,10,之所以是84是因为计算机中的位图大小为7*12。
posted @ 2019-04-22 11:50  youngliu91  阅读(263)  评论(0)    收藏  举报