卷积神经网络鼻祖LeNet网络分析

https://www.toutiao.com/a6634346529920385539/

1998年,被成为是现代卷积神经网络的鼻祖LeNet,被Yann LeCun正式提出。下图是广为流传LeNet的网络结构,它可以用麻雀虽小,五脏俱全来形容,其中卷积层、池化层、全连接层,这些都是现代卷积神经网络的基本组件。

总体来说LeNet是从输入INPUT->C1卷积层->S2池化层->C3卷积层->S4池化层->C5卷积层->F6全连接层->输出OUTPUT,如下图所示。

1 LeNet输入

LeNet的输入图像是32*32的大小,这要比mnist数据集中字母28*28要大。也就是说,要对mnist的数据进行两圈值为零的像素填充。像素填充的目的是为了让图像边缘的区域,也能出现在卷积过程感受野的中心。

2 LeNet的C1卷积层

C1层是LeNet的第一个卷积层,它的输入是32*32大小的图像,然后经过卷积过程,输出为6个通道28*28大小的特征图像。其中卷积核的大小为5*5,在LeNet中都使用了5*5大小的卷积核。

卷积过程的滑动步长为1,所以输出特征图像的计算方式为:32-5+1=28,因此输出特征图的大小为28*28。

因为输入为1通道的图像,然后用了6个卷积核,所以输出为6通道的特征图像。C1层的参数计算方式为(5*5+1)*6=156,其中每个卷积核为5*5,还带有一个偏置项。

3 LeNet的S2池化层

LeNet的第2层即S2是个池化层,在之前的文章中也为大家介绍过池化(pooling)过程,它是在做下采样操作,目的是在保留特征图像主要信息的同时,降低卷积神经网络的参数数量。

常见的池化有两种:

(1)Max-Pooling,选择Pooling窗口中的最大值作为采样值;

(2)Mean-Pooling, 将Pooling窗口中的所有值相加取平均,以平均值作为采样值。

在S2中的池化,选择的是特征图像2*2大小的窗口区域进行池化,因此特征图像的大小缩减了一倍,即从28*28的大小,变为14*14的大小。池化过程不影响特征图通道的数目,S2层池化过程如下图所示。

4 卷积与池化的重复

在卷积神经网络中,卷积与池化可以重复多次,可以一层卷积带有一层的池化如LeNet中的C1->S2,C3->S4,也可以多层卷积后再跟一个池化层。

在这里大家可以去思考一个问题,也就是怎样计算C3层的参数数目(提示,可以结合C1层的计算方式和之前文章中介绍的卷积知识去推算)。

在这里还需要注意的是C5层,它是一个比较特殊的卷积层,它的输入是16通道5*5大小的特征图像,而输出是一个120的向量。C5层可以有两种实现,第一种是使用5*5大小的卷积核进行卷积,第二种是将16通道5*5大小的特征图像拉平,然后再做全连接。

5 全连接

在实际LeNet的编码实现中,F6层和Output层都可以用全连接来实现。其中F6是120->84的全连接,而Output是84->10的全连接,最后的10对应10种类别。

F6层参数数量的计算为(120+1)*84=10164,这个跟多层感知器全连接参数的计算方式是一样的,每个全连接都带有一个偏置项。

后记

LeNet是学习卷积神经网络的一个非常好的示例,通过学习LeNet可以对卷积神经网络设计有基础的认识,比如卷积核大小,通道数目,全连接结构等等,为以后深入学习卷积神经网络设计打下比较好的基础。另外,在现在的卷积神经网络中经常会使用ReLU作为激活函数,并采用批归一化BN,DropOut等处理,在后续的文章还会为大家带来更多的分享,欢迎大家关注我们。

本文作者:宽涛老师

卷积神经网络鼻祖LeNet网络分析相关推荐

  1. [pytorch、学习] - 5.5 卷积神经网络(LeNet)

    参考 5.5 卷积神经网络(LeNet) 卷积层尝试解决两个问题: 卷积层保留输入形状,使图像的像素在高和宽两个方向上的相关性均可能被有效识别; 卷积层通过滑动窗口将同一卷积核和不同位置的输入重复计算 ...

  2. PyTorch实战福利从入门到精通之七——卷积神经网络(LeNet)

    卷积神经网络就是含卷积层的网络.介绍一个早期用来识别手写数字图像的卷积神经网络:LeNet [1].这个名字来源于LeNet论文的第一作者Yann LeCun.LeNet展示了通过梯度下降训练卷积神经 ...

  3. 【从零开始学习深度学习】25.卷积神经网络之LeNet模型介绍及其Pytorch实现【含完整代码】

    目录 1. LeNet模型介绍与实现 2. 输入为Fashion-MNIST时各层输出形状 3. 获取Fashion-MNIST数据和并使用LeNet模型进行训练 4.完整代码 之前我们对Fashio ...

  4. 【CNN】卷积神经网络(LeNet)是什么?如何实现LeNet?

    系列文章目录 第一章 深度学习 CNN中的卷积神经网络(LeNet) 目录 系列文章目录 文章目录 前言 一.卷积神经网络(LeNet)是什么? 二.LeNet的网络结构 三.实现LeNet模型 ​​ ...

  5. 卷积神经网络1——LeNet(LeNet-5)

    LeNet是最早的卷积神经网络. LeNet具有一个输入层,两个卷积层,两个池化层,三个全连接层.每个卷积快的基本单元是一个卷积层,一个sigmoid函数和平均汇聚层. 输入层:需要对28X28的图像 ...

  6. 全面深入理解卷积神经网络与LeNet 5 的结构

    全面深入理解卷积神经网络与LeNet 5 的结构 一.卷积神经网络的起源 1.与传统神经网络相比,卷积的优势何在 2.感受野机制 二.如何实现感受野? 1.什么叫卷积呢? 三.如何实现图像的卷积? 1 ...

  7. 卷积神经网络之 - Lenet

    本文建议阅读时间 10 min 前言 Lenet 是一系列网络的合称,包括 Lenet1 - Lenet5,由 Yann LeCun 等人在 1990 年<Handwritten Digit R ...

  8. pytorch学习笔记(二十三):卷积神经网络(LeNet)

    LeNet 使用多层感知机构造一个含单隐藏层的多层感知机模型来对Fashion-MNIST数据集中的图像进行分类.每张图像高和宽均是28像素.我们将图像中的像素逐行展开,得到长度为784的向量,并输入 ...

  9. 深度卷积神经网络(AlexNet)与卷积神经网络(LeNet)的区别及其代码实现(可直接复制运行)

    AlexNet出现的背景 LeNet在小批量样本的处理中表现尚可,但当样本过于复杂时处理起来结果不尽如人意. AlexNet出现于2010年后,该模型对较大批量数据(特别是图片较多和所包含信息较多的情 ...

最新文章

  1. Win32 环境下的堆栈
  2. 下载安装tomcat6.0
  3. Java学习笔记(十一)--类与对象
  4. 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历(BFS)
  5. CA证书和TLS介绍
  6. Android Asynchronous Http Client-Android异步网络请求客户端接口
  7. ad域同步其他ldap账号_域渗透——普通用户权限获得DNS记录
  8. php内嵌网页加载js,javascript 窗口加载蒙板 内嵌网页内容_javascript技巧
  9. c#开发Mongo笔记第九篇
  10. BZOJ1123: [POI2008]BLO
  11. 极目智能完成2亿元C1轮融资,已获多个乘用车ADAS项目定点
  12. 实现一个串口调试工具
  13. 图文实例带你了解香农编码和霍夫曼编码
  14. win10插入耳机还是外放
  15. 位移的单位符号_初中物理符号级单位符号公式大全
  16. java类库编程_进阶Java编程(5)基础类库
  17. python微信群管理_利用python实现在微信群刷屏的方法
  18. SharpDevelop出现未找到resgen.exe问题的解决办法
  19. chart.js使用用法
  20. 荣耀3手机android 5.0吗,华为荣耀3的手机系统是什么?华为荣耀3能升级安卓4.3吗?...

热门文章

  1. 揭开J2EE集群的神秘面纱(一):什么是J2EE集群
  2. CCF青年精英大会(YEF2021)即将召开
  3. 【活动报名 | 青源Talk第3期】DenseNet发明者黄高:面向边缘设备的轻量神经网络...
  4. 陆奇全面解读 AI 创业创新发展趋势,创业公司应该如何把握住机会?
  5. Nature Chemistry | 化学机器学习的最佳实践:推荐的一套标准化指南
  6. 2020 数据分析岗位报告:数据分析师需要哪些能力?
  7. 报名 | 刘鹰教授:草根创新力:中国经济快速发展的秘诀
  8. 报名 | 智进未来:AI在医疗健康领域的应用、挑战及发展趋势
  9. Linux 批量kill死进程
  10. 清华姚班陈丹琦获斯隆奖!与去年得主马腾宇是同班同学,博士毕业论文是近十年最热之一...