深度学习(DL)与卷积神经网络(CNN)学习随笔-05-基于Python的LeNet之CNN

版权声明:本文为原创文章,水平有限,欢迎转载,但请注明转载出处http://blog.csdn.net/niuwei22007,谢谢。!!!联系方式见左侧!!! https://blog.csdn.net/niuwei22007/article/details/48950347

  本文原链接可以查看更多文章
  
  博文01介绍了CNN的基本结构。博文020304依次介绍了卷积操作、LR模型的建立及实现,MLP模型及实现。这些都是作为实现LeNet的铺垫。因为LeNet的实现就是由它们组成的。
  
  今天我们就来讨论一下LeNet的模型建立及实现。
  先来看一下LeNet的结构图。由图中可得到其结构分别为输入层、s1、c1、s2、c2和输出层。

LeNet结构图

  其中,输入层到s1是卷积运算;输入层输入数据batch_size个样本,每个样本是一个 2828 的图片,s1层滤波器大小为 55 ,滤波器为20个。
  经过卷积运算,s1的特征图数目为20个,每个特征图的大小为 (285+1)(285+1)=2424 。为什么会是这个样子呢?这就涉及到卷积运算是怎么回事了。卷积运算一个最重要的特点就是可以使原信号特征增强,并且能降低噪音。具体运算过程,请移步这里
  
  当计算完第一组 55 区域后(比如计算的是原数据第一行下标0-4,第一列0-4构成的方阵), 55 的滤波器整体向右移动步长=1,那么下一次就是计算原数据第一行下标1-5,第一列0-4的方阵。以此类推,原数据第一行28个数据,那么就会向右移动 (285+1) 次。因此,最终的结果图大小就是 (285+1)(285+1) 。如何还不太清楚,可以自己手动画一下,画一个4*4的原数据, 22 的滤波器,最终生成的图像大小为 (42+1)(42+1)
  
  下面我们计算一下s1层需要训练的参数个数:s1生成有20个特征图,每个特征图的滤波器不同,同一个特征图的滤波器相同(这不废话吗)每个特征图含 2424 个元素,每个元素的生成是由本图的滤波器与原图像卷积计算得出。本图的滤波器含有 55 个W元素+1个b元素(共 55+1=26 个参数)。那么总的计算就是:共有 20(55+1)=520 个参数; 20(2424)(55+1)=299520 个连接

  s1层到c1层是下采样层。计算过程就是将s1的输出数据作为c1的输入数据。因此,输入数据为20个 2424 的特征图。经过采样大小为 22 感受野的计算后,结果仍然是20个特征图,每个特征图变为了 1212
  
  滤波器的移动是有重叠的。而下采样是无重叠的。采样计算过程如下:结果特征图中的每一个元素对应输入特征图中的 22 元素,将 22 区域元素累加,然后乘以一个可训练参数,再加上一个偏置值,最后通过sigmoid函数计算得到一个数值。然后结果图的下一个元素就是输入图中下一个 22 区域,以此类推。最终原图是 2424 的,经过下采样之后,就变成 1212 了(就是行和列分别是原来的一半。因此整体就是原来的1/4)。
  
  总体就是在特征图数目不变的前提下,将每个特征图进行了类似压缩的操作,这样元素个数大大降低,这就是所谓的下采样。同样我们计算一下c1层需要训练的参数个数:c1仍然生成20个特征图,每个特征图含 1212 个元素,每个元素的生成是由原图的 22 区域元素累加,然后乘以1个可训练参数+1个偏置b参数。相当于本图的滤波器含有 11 个W元素+1个b元素(共 11+1=2 个参数)。那么总的计算就是:共有 20(11+1)=40 个参数; 20(1212)(22+1)=14400 个连接。

  c1到s2是卷积运算;输入是batch_size个样本,每个样本是20个 1212 的特征图,s2层是50个滤波器,每个滤波器 55 大小。然后经过卷积运算,生成50个 88 的特征图。【c1与s2的全连接,但尚不清楚是如何计算的,因此未能算出其参数和连接。从其他资料经验看,应该有 2050(55+1)=26000 个参数; 2050(88)(55+1)=1664000 个连接。】

  s2层到c3层是下采样层,输入是50个 88 特征图,采用 22 感受野,结果是50个 44 特征图。

  c3层到输出层经过一个MLP层。输入数据是将c3的4维输出转换为2维矩阵,即把后三维 5044 转换为行数据,送入MLP的隐层,激活函数是tanh,输出是batch_size;然后再把结果送入MLP的LR层,经过softmax函数,将结果分为10类。

  至此,整个模型介绍完毕。经过注释后的代码GitHub下载  CSDN免费下载,包含2个文件:mlp.py和LeNetConvPoolLayer.py。
  
  肯定会有纰漏和错误,欢迎指出,共同进步。

参考目录:
1. 官方教程
2. Deep Learning(深度学习)学习笔记整理系列之(七)

猜你喜欢

转载自blog.csdn.net/niuwei22007/article/details/48950347