LeNet5是卷积神经网络的一种,通常的结构有七层,这七层中不包括输入层,其中每一层中都有不同的作用,所以每一层它的参数和权重各不相同。
-
输入层。处理好图像信息后输入(做好归一化处理等)。
注意此时输入图像的大小为32 * 32,这要比mnist数据库中的最大字母28 * 28要大,这样做的目的是希望潜在的明显特征能够出现在最高层特征监测子感受野的中心(笔画断线等)。 -
C1 卷积层。通过6个大小为5*5 的卷积核,得到了6张28 * 28的特征图。
padding=0,stride=1。
参数个数:
(5 * 5 + 1) * 6=156,其中5 * 5为卷积核的25个参数,1为偏置。
一共产生的连接数:
156 * 28 * 28=122304,其中156为滤波器的参数,28*28是每个像素(神经元)都要与滤波器产生链接。 -
S2 池化层(也是下采样层)。池化大小为2*2(本质是2 * 2大小的卷积核进行卷积),将每个特征图压缩至 14 * 14大小。
padding=0,stride=2
(28-2+2*0)/2+1=14 -
C3 卷积层。利用 16 个大小为 5 * 5 的卷积核,从 S2 层的每个特征图中
提取数据并卷积,得到 16 个大小为 10 * 10 的特征图。这里有个问题是:6个输入图如何通过卷积得到16个特征图
我刚开始以为是每个卷积核遍历所有输入图得到每一个特征图,后来发现不对。每一个卷积核并不是遍历所有输入图。
前六个卷积核只卷积相邻的三个输入图。
中间6-11只卷积相邻的4个输入图。
12-14卷积两两一对的四个图。
15才是都卷积。
所有参数个数是 6 * (3 * 5 * 5 + 1) + 6 * (4 * 5 * 5+1)+3 * ( 4 * 5 * 5 + 1)+1 *(6 * 5 * 5 + 1)=1516
而卷积之后图像大小10 * 10 = 100,所以共有151600个连接。
目的有两个
第一,不完全连接机制连接的数量保持在合理范围,第二,这样破坏了网络的对称性,由于不同的Feature Map有不同的输入,所以迫使他们抽取不同的特征(理想状态特征互补)。
-
S4池化层。池化的大小仍为 2 * 2,现在每个特征图被压缩到 5*5,也就是有 16 个 5 * 5 的特征图。
-
C5 卷积层。利用 120 个大小为 5*5 的卷积核,从 S4 层的每个特征图
中提取数据并卷积,得到 120 个大小为 (5-5+1) * (5- 5+1)=1 * 1的特征图。这里有个巧合,C5每的每个单元都与S4层的全部的16个5 * 5的邻域相连,此时构成了S4与C5之间的全连接。
这一层仍然是卷积层的原因是,如果增大输入的图像维度,这里特征图再不是1 * 1的。
但是,C5有可训练的参数和链接是相同的: (5 * 5 * 16 + 1) * 120 =48120。 -
F6 为全连接层。输入的是120维向量(120*1),人为规定可训练参数为84,也就是(120+1)个神经元和84个神经元全连接。
可训练参数也就是 84 * ( 120 + 1) = 10164