卷积神经网络鼻祖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. Request对象的主要方法有哪些?
  2. 面试题总结~~(google level)
  3. 大数据统计分析毕业设计_基于大数据分析的电子信息类专业毕业设计成绩影响因素研究...
  4. css固定gridview的表头
  5. 数据分析实例:企业需要什么样的数据分析人才?
  6. 从Scala2.13.0开始废弃了一些方法
  7. 谁提供一个能用的ICHAT文字聊天室程序,急需
  8. python123货币转换器_python货币转换
  9. C#时间格式化显示AM/PM
  10. 推荐9款最佳的编程字体
  11. 软件行业装机卖软件模式没落 转型SaaS服务趋势明显
  12. 数据库定义语言(DDL)详解
  13. python 爬取裁判文书网
  14. 【配送路径规划】蚁群算法求解配送路径最短问题【含Matlab源码 2222期】
  15. centos查oracle版本命令,Linux操作系统查看系统信息命令
  16. springboot+音乐播放小程序 毕业设计-附源码191730
  17. 统计分析——描述统计之数据水平描述
  18. 十行代码,我用Python做一个迷你版的美图秀秀!
  19. oracle 取某一年1月1日的多种方法
  20. 小红书编辑器_校招 | 微软、百度、小红书等校招已开启,尽快投递!

热门文章

  1. 如何删除oracle实例
  2. 揭开J2EE集群的神秘面纱(一):什么是J2EE集群
  3. 2020中国Ray技术峰会丨取代Spark,Michael Jordan和Ion Stoica提出下一代分布式实时机器学习框架...
  4. 智源研究院发布“智能信息检索与挖掘”重大方向,打造北京学派,联合攻关“个人智能信息助手”关键科学问题...
  5. 1月书讯 | 这几本开年新书倍受期待,每本书都教你一项技能
  6. 前方高能:1024程序员节读书攻略来来来来啦!
  7. 豆瓣评分 9.3 的 Java 巨著 | Bruce Eckel 重讲 Java 的编程思想
  8. 程序员买买买,纸书半价,电子书55折,抢券叠加使用更划算
  9. Human Pose Estimation人体姿态估计综述调研
  10. 樱木花道为原型,丰田做了个投篮机器人!完虐人类选手,还创下了吉尼斯世界纪录...