摘要
1.看mnist数据库特点
2.LeNet-5原理
3.数值化结果
1.mnist数据库特点
MNIST数据集是一个手写数字数据集,每一张图片都是0到9中的单个数字。
MNIST数据库的来源是两个数据库的混合,一个来自Census Bureau employees(SD-3),一个来自high-school students(SD-1);有训练样本60000个,测试样本10000个。训练样本和测试样本中,employee和student写的都是各占一半。60000个训练样本一共大概250个人写的。训练样本和测试样本的来源人群没有交集。MNIST数据库也保留了手写数字与身份的对应关系。我们可以使用Tensorflow提供的input_data.py 脚本来加载数据集。
2.LeNet-5原理
2.1、简介
卷积神经网络是一种特殊的多层神经网络,像其它的神经网络一样,卷积神经网络也使用一种反向传播算法来进行训练,不同之处在于网络的结构。卷积神经网络的网络连接具有局部连接、参数共享的特点。局部连接是相对于普通神经网络的全连接而言的,是指这一层的某个节点只与上一层的部分节点相连。参数共享是指一层中多个节点的连接共享相同的一组参数。
LeNet-5正是卷积神经网络的一种。
2.2原理简述
LeNet一共有7层(不包括输入层)
输入层:
输入图像的大小为3232,这要比mnist数据库中的最大字母(2828)还大。
作用: 图像较大,这样做的目的是希望潜在的明显特征,比如笔画断续,角点等能够出现在最高层特征监测子感受野的中心。
其他层:
C1,C3,C5为卷积层,S2,S4为降采样层,F6为全连接层,还有一个输出层。
每一个层都有多个Feature Map(每个Feature Map中含有多个神经元),输入通过一种过滤器作用,提取输入的一种特征,得到一个不同的Feature Map。如下图所示:
2.3、各层详解
卷积运算的优点:通过卷积运算,可以使原信号特征增强,并且降低噪声。
卷积对于二维图像中的效果就是:对于图像中的每个像素邻域求加权和得到该像素点的输出值。
-
C1卷积层
● C1 是一个卷积层,由6个Feature Map组成。 每一个Feature Map中的每个神经元与输入中55的区域相连(也就是Filter的大小),Feature Map的大小为2828,
● C1一共有156个参数,因为55个参数加上一个bias,一共又有6个Filter,所以为:(55+1)6=156,一共有156(28*28) = 122304个连接。 -
S2 下采样层(Pooling)
下采样的作用: 利用图像的局部相关性原理,对图像进行子抽样,可以减少数据处理量,同时又保留有用的信息。
同样的,有61414, 6个Feature Map。
池化层一般有两种方式:
● (1) Max_Pooling: 选择Pooling窗口中最大值最为采样值
● (2) Mean_Pooling: 将Pooling窗口中的所有值相加取平均,然后以平均值最为采样值。
说明:
每个单元的22的感受野()并不重叠,因此S2中每一个Feature Map的大小为C1中Feature Map中大小的1/4。行列各位1/2。所以,S2有12个可训练的参数和5880个连接。个人感觉,5880是这么来的,Filter的大小为:22,一个偏差bias,6个Feature Map,则可训练参数个数为:(22+1)6 = 30,连接数为:30(1414)= 5880
12 则为: 6个2*2的小方块,加上一个bias,为(1+1)*6=12卷积过程中,用一个可训练的过滤器fx去卷积一个输入图像,然后添加一个偏置bx ,得到卷积层Cx 。子采样过程就是:每个邻域4个像素变为一个像素,然后加上标量Wx 加权,最后再增加偏置bx+1 ,接着通过一个sigmoid激活函数,产生一个大概缩小了4倍的特征映射图Sx+1。
-
C3层 卷积层
同样的,Filter大小认为55,去卷积S2,得到的Feature Map为1010大小。每一个Feature Map中包含1010个神经元。C3层有16个不同的Filter,所以会得到16个不同的Feature Map。
C3中的每一个Feature Map连接到S2的所有6个Feature Map或者是几个Feature Map。表示本层的Feature Map是上一层提取的Feature Map的不同组合。为什么不把S2的每一个Feature Map连接到S3的每一个Feature Map中?原因有2: 第一,不完全连接机制连接的数量保持在合理范围,第二,这样破坏了网络的对称性,由于不同的Feature Map有不同的输入,所以迫使他们抽取不同的特征(理想状态特征互补)。
如果:C3的前6个Feature Map以S2中的3个相邻的Feature Map子集为输入,接下来的6个Feature Map以S2中相邻的4个Feature Map作为输入,接下来的3个以不相邻的4个Feature Map子集作为输入,最后一个将S2中所有的Feature Map作为输入的话,C3将会有1516个可训练参数和151600个连接。
因为6(325+1) + 6(425+1) + 3(425+1) + 1(625+1) = 1516。连接数为:15161010=151600。 -
S4层 Pooling层
由16个55的Feature Map组成,Feature Map中每个单元与C3中相应的Feature Map的22邻域相连。
S4有32个可训练的参数和2000个连接
同S2,(1+1)16=32. 连接数为: (22+1) 16 * 55 = 2000 -
C5 卷积层
这一层有120个Feature Map,每个单元与S4层的全部的16个55的邻域相连。 S4的Feature Map的大小也是55,这一层的Filter大小也是55,所以,C5的Feature Map的大小为11。此时构成了S4与C5之间的全连接。但这里C5表示为卷积层而不是全连接层,是因为如果LeNet的输入变大,而其他保持不变,此时的Feature Map的大小就比11要大。
C5有48120个可训练的链接: (55*16 +1) *120 = 48120。 -
F6 全连接层
有84个单元(之所以是84是因为输入层的设计),F6计算输入向量和权重向量之间的点积,再加上一个偏置,最后将其传递给sigmoid函数产生一个单元i的一个状态。
一共有10164个可训练的连接,为:84*(120+1)=10164。 -
输出层
输出层由欧式径向基函数(Euclidean Radia