LeNet - 5神经网络是什么?如何理解?
前言
LeNet - 5是一种可以基于TensorFlow搭建的神经网络。什么是LeNet-5?简单的进行解释:LeNet是一种典型的卷积神经网络的结构。而LeNet-5是在这种典型的结构下的一种七层(不包括输入层)的结构。其结构大致如下:
逐层解释:
下面对这八层(包括运算层)结构进行解读:
INPUT层:
这里是该神经网络的输入层。且图像的尺寸统一为32 x 32
C1层:
该层是一个卷积层,且使用6个卷积核大小为5 x 5的卷积进行卷积运算。从INPUT层输入的图片的尺寸为32 x 32,输出的6个Feature Map的尺寸大小均为28 x 28。
到这里可能又有读者开始懵了,这个输出的大小怎么计算?
卷积中的特征图大小计算方式有两种,分别是‘VALID’和‘SAME’,卷积和池化都适用,当尺寸不被整除时,卷积向下取整,池化向上取整。
1.如果计算方式采用’VALID’,则:
其中为输出特征图的大小,
为输入特征图的大小,F为卷积核大小,stride为卷积步长。
2.如果计算方式采用’SAME’,输出特征图的大小与输入特征图的大小保持不变,
其中padding为特征图填充的圈数。
带入1的公式即可得w(out) = (32 - 5)/(1) + 1 = 28
S2层:
该层是一个池化层(pooling,也称为下采样层)。这里采用max_pool(最大池化),池化的size定为2*2。经过池化后得到6个14 x 14的特征图,作为下一层的输入。
计算结果如此:w = (28 - 5 + 2*1)/2 + 1 = 13.5 池化向上取整得到14。
C3层:
该层仍然为卷积层。输入由池化层输入的图片尺寸14 x 14.通过由16个5 x 5的卷积核组成的卷积层进行卷积运算,输出16个10 x 10的特征图。运算过程为:w = (14 - 5)/1 + 1 = 10
S4层:
该层为一个池化层,输入上次输出的16个10 x 10的特征图,通过2 x 2的采样区进行采样。输出16个5 x 5的特征图。w = 10/5.
C5层:
继续使用5 x 5的卷积核进行卷积,但是卷积核的数量增加至120,这样C5层的输出就为:5-5+1=1的120个1 x 1的特征图,这样就实现了与S4的全连接。但仍将其标为卷积层,原因是如果LeNet-5的输入图片尺寸变大,其他保持不变,那该层特征图的维数也会大于1 x 1。
F6层:
通过全连接运算,输入120个1 x 1的特征图后输出84个1 x 1的特征图。
OUTPUT层:
OUTPUT层也是全连接层,输出长度为10的张量,代表所抽取的特征属于哪个类别。(例如手写体数字识别)
LeNet5 特征能够总结为如下几点:
- 卷积神经网络使用 3 个层作为一个序列:卷积、池化、非线性
- 使用卷积提取空间特征
- 使用映射到空间均值下采样(subsample)
- 双曲正切(tanh)或 S 型(sigmoid)形式的非线性
- 多层神经网络(MLP)作为最后的分类器
- 层与层之间的稀疏连接矩阵避免大的计算成本
总体来看,这个网络是最近大量架构的起点,并且也给这个领域的许多带来了灵感。