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。

浙公网安备 33010602011771号