深度学习入门——LeNet5模型计算

LeNet5

LeNet-5是一个简单地卷积神经网络,可以通过LeNet-5模型来实现MNIST手写体的识别。
LeNet-5模型大致上有两层卷积层,两层池化层,两层全连接层。

操作流程:

深度学习入门——LeNet5模型计算_第1张图片
1)输入层:输入一张图像(手写体识别的图像一般是黑白的,图像只有单通道),对这张图片先进行数据预处理,使图片的尺寸统一为32x32大小(当然其他大小也可,但图片尺寸不可过大或过小,导致卷积核无法完全提取图像特征,造成最后结果的一定偏差);
2)卷积层:将输入的图片经过卷积核(滤波器)来提取特征,每一种卷积核可以提取出图片上不同的特征。一般卷积出来的图像数据要进行一次激活,为神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数;
3)池化层:将经过一次卷积提取特征后的特征图传入池化层中,在池化层中一般有两种操作——最大池化与平均池化。通过池化层可以压缩图片,将图片中无关紧要的特征剔除;
4)卷积层:第二次用卷积核提取特征,获得特征图;
5)池化层:对卷积层输出的结果进行采样,压缩图像尺寸大小;
6)卷积层:将上一层的所有特征图用卷积核进行展开,最后得到的结果为一个一维的向量,便于后续的全连接操作;
7)全连接层:主要是用于分类——将上一层所得到的一维向量与权重向量进行点积运算,在加上一个偏置,通过激活函数后输出,会得到新的神经元,这些神经元是通过特征合并后的;
8)输出层:此层也是一层全连接层,在这一层中会将上一层的神经元再次合并得到10个神经元,这10个神经元就分别代表数字0到9的特征,可根据图像最后输出的数据来进行判断图像上的数字是什么。

LeNet-5模型的计算

INPUT层

输入图像,预处理后图像的尺寸统一为32x32大小

C1层

设定有卷积核大小为:5x5

卷积核的种类有6种

此处无须扩充边缘,即padding=0

每次移动卷积核的步长为1

【特征图的大小可经过公式来计算——

  • output=(N-F+2xpad)/stride+1
  • (其中N指输入的图像大小,F指卷积核的大小,pad指对图像扩充的边缘大小,stride指卷积核移动的步长)】

feature map尺寸大小的计算:output=(32 - 5 + 0)/ 1 + 1 = 28

最后得到的feature map尺寸大小为:28x28

这样的feature map共有6层,所以最后可以得到的神经元的数量是:28x28x6

在这个过程中可以进行训练的参数有:(5x5+1)x6个。
(因为每个滤波器大小为5x5,会涉及到5x5个参数,而每个滤波器会有一个偏置参数bias,这样的滤波器一共有6个)

S2层

上一层提取特征后得到的图像尺寸为28x28,即此层的输入为28x28

将采样区域设置成2x2大小的,将图像缩小一半大小

由于此时图像有6个通道,需要采样的种类有6个

最后采样结束后会得到的图像大小为14x14(14=28/2)

此时的神经元个数为14x14x6 (图像大小 x 通道数)

C3层

此层的计算方式与C1层相同

从上层输出的图像为 14x14x6 (一层大小为14x14,共有6层),即此处输入的图像为 14x14x6

设置卷积核的大小仍为 5x5

此时的卷积核中类为 16 个
(进一步的提取特征,一般第一次卷积时所用的卷积核种类不多,主要是大致提取特征,后几层的卷积核种类会增加,用于提取更加细致的特征)

此时每一层的feature map的尺寸大小为:10x10
(10 = (14 - 5 + 0) / 1 + 1)

输出的结果为10x10x16 , 即在这一层一共有10x10x16个神经元

可训练的参数个数有 (5x5+1)x16个

S4层

输入的每一层的特征图大小为10x10,共有16层,即采样的种类会有16种

在此处的采样区域仍定义成2x2大小

最后输出的结果为5x5x16

此时有神经元个数为:5x5x16

C5层

在这一层中,要将所有的特征图转换成一维的向量

输入为:5x5x16

由于要获得一维的向量,卷积核的大小可以设置成输入图像的大小,即此处我会将卷积核的大小设置成5x5

设置卷积核的种类有120种

最后输出的feature map的大小为:1x1

共有神经元:1x1x120

可训练的参数个数有:(5 x 5 + 1)x 120

F6层

此层为全连接层

输入120维的向量,将这120个神经元与84个神经元全连接

输入的每一个神经元都要与84个神经元进行一次计算(输入向量点积权重向量,再加上一个偏置,将结果进行sigmoid函数激活)

最后得到的结果是84个神经元

此处可训练的参数有:(120 + 1)x 84

OUTPUT层

此层也是一个全连接层

将上一层得到的84个神经元与10个神经元进行全连接(将特征集合到10个神经元上)

最后输出的结果是 1x1x10

此处可训练的参数有:(84 + 1)x 10

Reference

参考链接:https://blog.csdn.net/llyj_/article/details/88933773#_3

你可能感兴趣的:(深度学习)