在数字手写体识别中,LeNet-5卷积神经网络框架是每一个深度学习入门新手都必须要掌握的基本框架模型。本文对这个基本模型进行一下介绍:
可以看出LeNet-5包含输入层共有8层,每一层都包含多个参数(权重)。C层代表的是卷积层,通过卷积操作,可以使原信号特征增强,并且降低噪音。 S层是一个下采样层,利用图像局部相关性的原理,对图像进行子抽样,可以减少数据处理量同时保留有用信息。下面针对每一层进行解释:
1. 输入层是32*32大小的图像。
2. C1层是一个卷积层,有6个feature map,由于用的5*5大小的卷积核,每个feature map有28*28个神经元,每个神经元都与输入层的5*5大小的区域相连。所以C1层一共有(5*5+1)*6=156个参数(同一feature map的每个神经元共享权值,一共个unite参数和每个feature map固有的一个bias参数,一共6个feature map)。两层之间的连接数为156*(28*28)=122304(C1层的每个feature map的每个神经元都与输入层有(5*5+1=26)个连接,每个feature map层又有28*28个神经元,一共有6个feature map层,故可以得到122304个连接)
3. S2层是一个下采样层,有6个feature map,每个feature map中的每个神经元都与C1层对应的feature map中的2*2的区域相连。S2层中的每个神经元是由这4个输入相加,再乘以一个训练参数,再加上这个feature map的偏置参数,结果通过sigmoid函数计算而得。故S2中各feature map有14*14个神经元。由于S2每个feature map中的神经元都只需要两个参数计算得来,一共6个feature map,故S2层所有的参数为12个。而S2中各feature map的每个神经元都与C1层的4个神经元和1个偏置单元相连,故可以得到连接数为(14*14)*(4+1)*6=5880。
4. C3层也是一个卷积层,它也是运用的5*5的卷积核,去处理S2层。可以计算出C3各feature map的神经元个数为10*10。可以看到不同的是C3有16个feature map,它的每个feature map都是由上一层的各feature map之间的不同组合。如本例所示的组合方式如图所示可以得知:C3层的第0个feature
map是由S2层的第0,1,2个feature
map组合得到的,C3层的第1个feature map是由S2层的第1,2,3个feature
map组合得到的。。。看图类推即可。
现在我们可以计算出C3层的训练参数个数为
(5*5*3+1)*6+(5*5*4+1)*9+(5*5*6+1)*1=1516
5. S4层是一个下采样层,同理,由16个大小的feature map构成,每个神经元都与C3中对应feature map的2*2大小的区域相连。同样可以计算出来有个2*16=32参数,和(4+1)*(5*5)*16=2000个连接。
6. C5层是一个卷积层,同样使用的5*5卷积核,所以每个feature map有1个神经元,每个单元都与S4层的全部16个feature map的区域相连(全相连)。C5层一共有120个feature map。
C5层的参数为(5*5*16+1)*120=48120
7. F6层有84个feature map(取决于输出层的设计),每个feature map只有一个神经元,与C5层全相连。故有个参数和连接。F6层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给sigmoid函数来计算神经元。
8. 输出层由欧式径向基函数(Euclidean Radial Basis Function)神经元组成,每个类别对应一个神经元,一共10类,故10个神经元,每个神经元都有84个输入。
总结:得掌握每一层参数的计算方法,最后的3层有点类似于普通的神经网络结构,对应的输入层-隐含层-输出层