LeNet-5网络
LeNet-5共有7层(不包含输入),每层都包含可训练参数;每个层有多个Feature Map(特征图),每个FeatureMap通过一种卷积滤波器提取输入的一种特征,然后每个FeatureMap有多个神经元。
各层参数:
1、输入层
输入图像的尺寸统一归一化为32*32。本层不算LeNet-5的网络结构,传统上,不将输入层视为网络层次结构之一。
2、C1层-卷积层
输入图片:32 * 32 * 1
卷积核大小:5 * 5
核个数(通道数/特征图的种类数):6
输出featuremap大小:28 * 28 (32-5+1=28)
输出神经元数量:28 * 28 * 6
可训练参数:(5 * 5+1) * 6=156(每个滤波器5 * 5=25个unit参数和一个bias参数,一共6个滤波器)
连接数:(5 * 5 + 1)* 6 * 28 * 28=122304
注意:对于卷积层C1,C1内的每个像素都与输入图像中的5 * 5个像素和1个bias有连接,所以总共有156 * 28 * 28=122304个连接。
注意: 有122304个连接,但是只需要学习156个参数,主要是通过权值共享实现的。
3、S2层-池化层(下采样层)
输入:28 * 28 * 6
采样区域(滤波器大小):2 * 2
采样方式:该网络中,下采样操作与池化操作类似,但是在得到采样结果后会乘以一个系数并加上一个偏置。所以下采样的参数个数是(1+1) * 6 而不是0。
通道数:6
输出featureMap大小:14 * 14(28/2)
神经元数量:14 * 14 * 6
连接数:(2 * 2 + 1)* 6 * 14 * 14 = 5880
注意:S2中每个特征图的大小是C1中特征图大小的1/4。
4、C3层-卷积层
输入:14 * 14 * 6
卷积核大小:5 * 5
通道数:16
输出featureMap大小:10 * 10 (14-5+1=10)
注意:C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合。
存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。
则:可训练参数:6 * ( 3 * 5 * 5 + 1 ) + 6 * ( 4 * 5 * 5 + 1 ) + 3 * ( 4 * 5 * 5 + 1 ) + 1 * ( 6 * 5 *5 + 1 ) = 1516
详细说明:第一次池化之后是第二次卷积,第二次卷积的输出是C3,16个10x10的特征图,卷积核大小是 5x5. 我们知道S2 有6个 14x14 的特征图,怎么从6 个特征图得到 16个特征图了? 这里是通过对S2 的特征图特殊组合计算得到的16个特征图。具体如下:
为什么采用上组合原因有2:1)减少参数,2)不对称的组合连接方式有利于提取多种组合特征。
连接数:10 * 10 * 1516 = 151600
5、S4层-池化层(下采样层)
输入:10 * 10
采样区域(滤波器大小):2 * 2
采样种类(通道数):16
输出featureMap大小:5 * 5(10/2)
神经元数量:5 * 5 * 16 = 400
连接数:16 * ( 2 * 2 + 1 ) * 5 * 5=2000
S4中每个特征图的大小是C3中特征图大小的1/4
6、C5层-卷积层(结果看起来像全连接层)
输入:5 * 5 * 16(与s4全相连)
卷积核大小:5 * 5
卷积核种类:120
输出featureMap大小:1 * 1(5-5+1)
可训练参数/连接:120 * ( 16 * 5 * 5 + 1)=48120
C5层是一个卷积层。由于S4层的16个图的大小为5x5,与卷积核的大小相同,所以卷积后形成的图的大小为1x1。这里形成120个卷积结果。每个都与上一层的16个图相连。所以共有(5x5x16+1)x120 = 48120个参数,同样有48120个连接。
7、F6层-全连接层
输入: 120维向量
计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数输出。
可训练参数:84 * (120+1)=10164
详细说明:6层是全连接层。F6层有84个节点,对应于一个7x12的比特图,-1表示白色,1表示黑色,这样每个符号的比特图的黑白色就对应于一个编码。该层的训练参数和连接数是(120 + 1)x84=10164。ASCII编码图如下:
8、Output层-全连接层
Output层也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i。采用的是径向基函数(RBF)的网络连接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:
上式w_ij 的值由i的比特图编码确定,i从0到9,j取值从0到7*12-1。RBF输出的值越接近于0,则越接近于i,即越接近于i的ASCII编码图,表示当前网络输入的识别结果是字符i。该层有84x10=840个参数和连接。
上图为LeNet-5识别数字3的过程。