LeNet-5
网络结构
输入→卷积(C1)→池化(S2)→卷积(C3)→池化(S4)→全连接(F5)→全连接(F6)→输出(Output)
卷积神经网络的构成
输入层
整个网络的输入部分,在图像中,一般就是一个图像的像素矩阵,一般为三维矩阵,其中长宽代表了图像的大小,深度代表了图像的色彩通道(channel),其中,黑白图片的深度为1,彩色采用RGB色彩模式下的深度为3.
卷积层
卷积层中的输入为上一层中的一小块(一般为33或55的卷积块),通过卷积操作,会使节点矩阵变得更深。
卷积层的计算
- 局部关联:每个神经元看做一个滤波器(filter)
- 窗口滑动: filter对局部数据计算
深度:如下图
步长:滑动窗口每次移动的长度
填充值(padding):在原有的矩阵外填充(一般为0)一层,以便遍历矩阵的全部像素
卷积操作:
特征图的边长:N = ( W − F + 2 P ) / S + 1
其中,W是输入的图像,F是卷积核大小,P是填充值,S是步长。
常用激活函数:
池化层
池化层可以看作将一张高分辨率的图像转化为低分辨率的图像,通过池化层,可以进一步缩小最后全连接层中节点的个数,以减少神经网络中的参数。
- 最大池化是指把卷积后函数区域内元素的最大值作为函数输出的结果,对输入图像提取局部最大响应,选取最显著的特征。
- 平均池化是指把卷积后函数区域内元素的算法平均值作为函数输出结果,对输入图像提取局部响应的均值。
如下图。
LeNet模型
LeNet-5共有7层,不包含输入,每层都包含可训练参数;每个层有多个Feature Map,每个FeatureMap通过一种卷积滤波器提取输入的一种特征,然后每个FeatureMap有多个神经元。
输入层:
在上述图像中,输入层为一个32×32像素的图像,其通道数为1.
C1层(卷积层):
使用了6个5×5大小的卷积核,padding=0,stride=1,输出为6个28×28大小的特征图
S2层(池化层-下采样层):
- 输入:28*28
- 卷积核:2*2
- 采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
- 卷积核种类(输出通道):6
- 输出featureMap大小:14*14(28/2)
- 神经元数量:14 * 14 *6
- 可训练参数:2*6(和的权+偏置)
- 连接数:(2 * 2 + 1)* 6 * 14 *14
- S2中每个特征图的大小是C1中特征图大小的1/4。
S3层(卷积层):
使用 16 个 5×5xn 大小的卷积核,padding=0,stride=1 进行卷积,得到 16 个 10×10 大小的特征图:14-5+1=10
S4层(池化层-下采样层):
使用 16 个 2×2 大小的卷积核进行池化,padding=0,stride=2,得到 16 个 5×5 大小的特征图:10/2=5。
参数个数:(1+1)*16=32。
F5层(卷积层-全连接层):
使用 120 个 5×5x16 大小的卷积核,padding=0,stride=1进行卷积,得到 120 个 1×1 大小的特征图:5-5+1=1。即相当于 120 个神经元的全连接层。
参数个数:(5516+1)120=48120。
连接数:481201*1=48120
F6层(全连接层):
- 输入:c5 120维向量
- 计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数输出。
- 可训练参数:84*(120+1)=10164
OUTPUT层(输出层):
Output 层共有 10 个节点,分别代表数字 0 到 9。假设x是上一层的输入,y 是 RBF的输出,则 RBF 输出的计算方式是:
参数个数:84*10=840。
连接数:84*10=840