深度学习之卷积神经网络经典网络LeNet-5简介
1. LeNet-5简介
LeNet5卷积神经网络源于Yann LeCun在1998年发表的论文:Gradient-based Learning Applied to Document Recognition (论文下载地址:http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf),是一种用于手写数字识别的卷积神经网络。
LeNet-5是CNN网络架构中最知名的网络模型,是卷积神经网络的开山之作。
2. MNIST数据集
MNIST数据集(官网:http://yann.lecun.com/exdb/mnist/)是由Yann LeCun等人收集整理,其目的是用于手写数字识别模型的训练。主要包括了6万张训练图像和1万张测试图像,每张图像大小为28*28的灰度图像,即图像通道数为1。官网提供的下载分为四个文件,即训练集图像、训练集标签、测试集图像、测试集标签:
由于官网下载速度超慢,更快下载请移步:
mnist数据集下载——mnist数据集提供百度网盘下载地址
3. LeNet5结构
上图是LeNet5原文中的截图,LeNet5包含了卷积网络的基本组成部分:卷积、池化及全连接。顾名思义,LeNet5为5层的卷积神经网络:3层卷积和2层全连接层组成。
网络层 | 类型 | 特征图 | 尺寸 | 核大小 | 步长 | 激活函数 |
---|---|---|---|---|---|---|
输出层 | 全连接层 | 10 | None | None | None | RBF |
F6 | 全连接层 | None | 84 | None | None | tanh |
C5 | 卷积层 | 120 | 1*1 | 5*5 | 1 | tanh |
S4 | 平均池化层 | 16 | 5*5 | 2*2 | 2 | tanh |
C3 | 卷积层 | 16 | 10*10 | 5*5 | 1 | tanh |
S2 | 平均池化层 | 6 | 14*14 | 2*2 | 2 | tanh |
C1 | 卷积层 | 6 | 28*28 | 5*5 | 1 | tanh |
输入层 | 输入 | 1 | 32*32 | None | None | None |
注意:通常输入层不计入神经网络层数。
3.1输入层
输入层为32*32大小的灰色图像。通常输入层不计入神经网络层数。
MNIST数据集图像大小为28*28,因此在喂入网络前对图像四周进行0填充,使得大小变为32*32,并且对像素值进行归一化处理。
3.2 卷积层1
输入:1个32*32的图像
卷积:卷积层1选取6个5*5的卷积核,步长为1,非全0填充,因此输出图像长宽为(32-5+1)/1=28。
参数:6*5*5+6*1=156。
连接数:(5*5+1)*6*28*28=122304
输出:为6个28*28的特征图
3.3 降采样层2
输入:6个28*28的特征图
参数:6*1+6*1=12
连接数:(2*2+1)*6*14*14=5880
输出:6个14*14的特征图
该层在LeNet5原文中称作降采样层(sub-sampling layer),使用了6个2*2的卷积核,具体运算过程为:2*2的视野中4个数求和后乘上一个可训练的权重并加上一个偏置,
注意:目前卷积神经网络普遍的做法是平均池化或最大池化,最大池化更常用。因此这一层池化层可以改进为平均池化或最大池化即可,不用再乘以权重和加上偏置。
3.4 卷积层3
输入:6个14*14的特征图
卷积:卷积层2选取16个5*5的卷积核,步长为1,非全0填充,因此输出图像长宽为(14-5+1)/1=10。
参数:6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516
连接数:(3*5*5+1)*6*10*10+(4*5*5+1)*6*10*10+(4*5*5+1)*3*10*10+(6*5*5+1)*1*10*10=151600
输出:16个10*10的特征图
注意:卷积层3的前6个feature map(对应下图第一个红框的6列)与3.3中降采样层的相连3个feature map相连接(下图第一个红框);之后6个feature map与3.3中降采样层的相连4个feature map相连接(下图第二个红框);之后3个feature map与3.3中降采样层部分不相连的4个feature map相连接;最后一个feature map与3.3中降采样层的所有feature map相连。
3.5 降采样层4
输入:16个10*10的特征图
参数:16*(1+1)=32
连接数:(2*2+1)*16*5*5=2000
输出:16个5*5的特征图
3.6 卷积层5
输入:16个5*5的特征图
卷积:卷积层5选取120个5*5的卷积核,步长为1,非全0填充,因此输出图像长宽为(5-5+1)/1=1。
参数:120∗(25∗16+1)=48120
连接数:120∗(25∗16+1)=48120
输出:为120个1*1的特征图
注意:总共生成120个feature map,每个feature map与上一层所有的feature map相连接,卷积核大小为5*5,因此共有120∗(25∗16+1)=48120个连接。
3.7 全连接层6
输入:120维的向量
神经元:84个
参数:120*84+84=10164
连接:120*84+84=10164
输出:84维向量
3.8 输出层7
输入:84维向量
神经元:10个
参数:0(由于输出层采用的是径向基函数,所以参数个数为0)
连接数:84*10=840
输出:10(对应10个分类结果)
4. 总结
LeNet5总共5层:3层卷积和2层全连接,池化层未计入层数。参数总数为60000个,而连接数达340908,连接数远远多于参数个数,这主要归功于卷积核的参数共享。
LeNet5是卷积神经网络的开篇大作,稍显复杂、晦涩难懂,或者说与现在的卷积神经网络相比有些绕,但在当年来说是非常了不起的成就,完成了卷积神经网络从无到有的突破。
5. TensorFlow2实现LeNet5
请移步:
实现方案1:TensorFlow2利用MNIST数据集实现LeNet5卷积神经网络模型
6. 参考文献
LeNet5论文原著:Y. Lecun ; L. Bottou ; Y. Bengio ; et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11):2278-2324.
深度学习之卷积神经网络经典网络LeNet-5简介相关推荐
- 【深度学习】卷积神经网络发展史从LeNet到AlexNet
本文主要讨论CNN的发展,并且引用刘昕博士的思路,对CNN的发展作一个更加详细的介绍,将按下图的CNN发展史进行描述: 上图所示是刘昕博士总结的CNN结构演化的历史,起点是神经认知机模型,此时已经出现 ...
- 深度学习之卷积神经网络(12)深度残差网络
深度学习之卷积神经网络(12)深度残差网络 ResNet原理 ResBlock实现 AlexNet.VGG.GoogleLeNet等网络模型的出现将神经网络的法阵带入了几十层的阶段,研究人员发现网络的 ...
- 深度学习~卷积神经网络(CNN)概述
目录 1. 卷积神经网络的形成和演变 1.1 卷积神经网络结构 1.2 卷积神经网络的应用和影响 1.3 卷积神经网络的缺陷和视图 1.3.1 缺陷:可能错分 1.3.2 解决方法:视图 ...
- 深度学习之卷积神经网络(10)CIFAR10与VGG13实战
深度学习之卷积神经网络(10)CIFAR10与VGG13实战 MNIST是机器学习最常用的数据集之一,但由于手写数字图片非常简单,并且MNIST数据集只保存了图片灰度信息,并不适合输入设计为RGB三通 ...
- 【深度学习】卷积神经网络-图片分类案例(pytorch实现)
前言 前文已经介绍过卷积神经网络的基本概念[深度学习]卷积神经网络-CNN简单理论介绍.下面开始动手实践吧.本文任务描述如下: 从公开数据集CIFAR10中创建训练集.测试集数据,使用Pytorch构 ...
- 【深度学习】卷积神经网络速成
[深度学习]卷积神经网络速成 文章目录 [深度学习]卷积神经网络速成 1 概述 2 组成 2.1 卷积层 2.2 池化层 2.3 全连接层 3 一个案例 4 详细分析 1 概述 前馈神经网络(feed ...
- 深度学习之卷积神经网络(11)卷积层变种
深度学习之卷积神经网络(11)卷积层变种 1. 空洞卷积 2. 转置卷积 矩阵角度 转置卷积实现 3. 分离卷积 卷积神经网络的研究产生了各种各样优秀的网络模型,还提出了各种卷积层的变种,本节将重点介 ...
- 深度学习之卷积神经网络(8)BatchNorm层
深度学习之卷积神经网络(8)BatchNorm层 BatchNorm层概念 BatchNorm层实现 1. 向前传播 2. 反向更新 3. BN层实现 4. 完整代码 卷积神经网络的出现,网络参数量大 ...
- 深度学习之卷积神经网络(7)池化层
深度学习之卷积神经网络(7)池化层 在卷积层中,可以通过调节步长参数s实现特征图的高宽成倍缩小,从而降低了网络的参数量.实际上,处理通过设置步长,还有一种专门的网络层可以实现尺寸缩减功能,它就是这里要 ...
最新文章
- 屏蔽敏感词的正则表达式
- 加权残差连接ReZero
- xp sp3安装.Net 4.0提示严重错误,0x80070643,解决办法2017版
- oracle:sql约束
- 使用网络存储SAN和NAS
- maven pc配置要求_《使命召唤:黑色行动5》公开测试PC配置要求:推荐GTX970+i7
- 四轴码垛机器人配件_四轴码垛机器人的应用范围
- php 类 private,有关php类的private属性继承问题详解
- 勒索病毒的原理和防范机制研究
- 什么是即席查询及即席查询实现
- 侠盗病毒”志不在“侠”,360安全大脑强力查杀!
- unity lookat导致物体颠倒怎么解决_在Unity 2D中如何用一行代码实现LookAt的效果,以及向量归一化小总结...
- SAP中国客户名单[转载]
- 今日睡眠质量记录79
- kali2020之chrome安装代理插件
- 巨帧(jumbo frame)
- Unity Movetowards方法
- 使用IKAnalyzer进行中文分词
- R语言使用factor函数处理名义变量(nominal、无序/标称分类变量)、使用ordered函数处理序数变量(ordinal、有序分类/标称变量)
- matlab与amesim,amesim与matlab联合仿真步骤(自己总结)(精)