1.LeNet-5结构总览
LeNet-5总体框架结构如下图所示,具体层级为INPUT->C1->S2->C3->S4->C5->F6->OUTPUT。
C : 卷积层
S : 池化层
下文对网络框架的每一层做出详细说明
2.输入层INPUT
在LeNet-5网络中,输入数据采用32*32的二维数组存储,当然此处只做举例说明,具体的图像大小可以根据项目的具体需求自行确定。如果采用torchvision.dataset.MNIST
数据集用于训练该网络,那么在编程时有一个细节要注意,要给该数据集添加上颜色通道的维度(灰度图即为1维通道),代码形式则为train.data.unsqueeze(1)/255.0
。
3.卷积层C1
如下图所示,有六个大小为55的卷积核对输入图像进行卷积处理,padding=0,stride=1。由32-5+1可得输出为2828的矩阵,再由有六个卷积核进行卷积可知C1卷积层有六个特征输出。
上述文字大致全面的概述了C1卷积层内部的结构和运作原理。相较于深度神经网络DNN每层之间的全连接模式,卷积神经网络采用的是通过卷积核在输入数据上的滑动加上对应权重求和的方式,也就是在输入数据上的权重共享方式,不仅大大实现了层与层之间连接数的减少,而且保留了输入数据的位置特征。
4.池化层S2
池化层作用为降低数据的维度。池化层S2由六个2x2的矩阵组成,padding=0,stride=2。经过池化层后,输出变为6特征14x14的矩阵。
5.卷积层C3
C3层是卷积层,由16个5x5xn的卷积核构成。输入为6个14x14的矩阵,输出为16个10x10的矩阵。与传统卷积不同的是并不是每一个卷积核都覆盖S2的所有输出通道,具体见下表所示:
C3输出层的前六个特征(0-5)分别由S2相邻的三通道与前6个卷积核卷积而成。其余的于此类推,上表已经清晰的展示。
6.池化层S4
S4 层与 S2 一样也是降采样层,使用 16 个 2×2 大小的卷积核进行池化,padding=0,stride=2,得到 16 个 5×5 大小的特征图:10/2=5。
参数个数:(1+1)x16=32。
连接数 :(2x2+1)x16x5x5 = 2000。
7.C5 层
C5 层是卷积层,使用 120 个 5×5x16 大小的卷积核,padding=0,stride=1进行卷积,得到 120 个 1×1 大小的特征图:5-5+1=1。即相当于 120 个神经元的全连接层。
值得注意的是,与C3层不同,这里120个卷积核都与S4的16个通道层进行卷积操作。
参数个数:(5516+1)120=48120。
连接数:481201*1=48120。
8.F6层
F6 是全连接层,共有 84 个神经元,与 C5 层进行全连接,即每个神经元都与 C5 层的 120 个特征图相连。计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过 sigmoid 函数输出。
F6 层有 84 个节点,对应于一个 7x12 的比特图,-1 表示白色,1 表示黑色,这样每个符号的比特图的黑白色就对应于一个编码。该层的训练参数和连接数是(120 + 1)x84=10164。