传统的模式识别方法如下图所示,通常包含2个部分,第一部分为特征提取模块,第二部分为分类模块。特征提取模块通常会提取一些基本的特征,与任务是无关的,此模块通常为人工设计的。分类模块通常是针对任务的并且是可训练的。传统的方法很大程度上依赖人工设计的特征提取模块能否提取到有效的特征,并且对于不同的任务需要重新设计。

相比较之前的优点

第一、卷积相比较FC所需要的参数少。
第二、FC丢失了空间信息,而卷积操作可以很好的保留。

网络结构


LeNet5网络包含两层卷积层和三层全连接层。
输入为32×3232 \times 3232×32的图片。
输入图像的shape:1×32×321 \times 32 \times 321×32×32

1、卷积层C1

kenel size: 5×55 \times 55×5
#kernel:6
经过卷积之后的shape:6×28×286 \times 28 \times 286×28×28
#parameters:6*(551+1) = 156 (包含bias)

2、下采样层S2(平均池化层)

kenel size: 2×22 \times 22×2
经过下采样之后的shape:6×14×146 \times 14 \times 146×14×14
现在的实现常用最大池化。

3、卷积层C3

kenel size: 5×55 \times 55×5
#kernel:16
经过卷积之后的shape:16×10×1016 \times 10 \times 1016×10×10
论文中提到的是前6个feature map 与S2中的3个相邻的feature map相连,接下来的6个feature map与S2中的4个相邻的feature map相连,再接下来的3个feature map与S2
中的4个不相邻的feature map相连,最后一个feature map与S2中所有的feature map相连。
#parameters:6*(553+1) + 6*(554+1) + 3*(554+1) + 1*(556+1) = 1516

4、下采样层S4(平均池化层)

kenel size: 2×22 \times 22×2
经过下采样之后的shape:16×5×516 \times 5 \times 516×5×5
现在的实现常用最大池化。

5、卷积层C5

kenel size: 5×55 \times 55×5
#kernel:120
经过卷积之后的shape:120×1×1120 \times 1 \times 1120×1×1
#parameters:120*(5516+1) = 48120

6、全连接层F6

F6相当于MLP(Multi-Layer Perceptron,多层感知机)中的隐含层,有84个节点,所以有84∗(120+1)=10164 个参数,F6采用了sigmoid函数,不过现在实现通常用ReLU函数。

7、输出层

全连接层,共有10个节点,采用的是径向基函数(RBF)的网络连接方式。

代码

import torch
from torch import nnclass LeNet5(nn.Module):def __init__(self):super(LeNet5, self).__init__()self.conv1 = nn.Sequential(nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5, padding=2),# nn.BatchNorm2d(6),nn.ReLU(),nn.MaxPool2d(kernel_size=2, stride=2))self.conv2 = nn.Sequential(nn.Conv2d(in_channels=6, out_channels=16, kernel_size=5),# nn.BatchNorm2d(16),nn.ReLU(),nn.MaxPool2d(kernel_size=2, stride=2))self.fc = nn.Sequential(nn.Linear(16 * 5 * 5, 120),nn.Linear(120, 84),nn.Linear(84, 10))def forward(self, x):x = self.conv1(x)x = self.conv2(x)x = x.view(x.shape[0], -1)x = self.fc(x)return xif __name__ == '__main__':x = torch.rand(8,1,28,28)net = LeNet5()y = net(x)print(y.shape)print(y)

Reference

1.LeNet5的论文及理解

LeNet5论文解读相关推荐

  1. ICLR 2019论文解读:量化神经网络

    https://www.toutiao.com/a6701879235964830212/ 今年五月举办 ICLR 2019 会议共接收论文 502 篇,本文将解读其中两篇有关量化神经网络的研究. U ...

  2. 自监督学习(Self-Supervised Learning)多篇论文解读(下)

    自监督学习(Self-Supervised Learning)多篇论文解读(下) 之前的研究思路主要是设计各种各样的pretext任务,比如patch相对位置预测.旋转预测.灰度图片上色.视频帧排序等 ...

  3. 自监督学习(Self-Supervised Learning)多篇论文解读(上)

    自监督学习(Self-Supervised Learning)多篇论文解读(上) 前言 Supervised deep learning由于需要大量标注信息,同时之前大量的研究已经解决了许多问题.所以 ...

  4. 可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读

    可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读 Visual Deprojection: Probabilistic Recovery of Collapsed Dimensions 论文链接: ...

  5. 从单一图像中提取文档图像:ICCV2019论文解读

    从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...

  6. 点云配准的端到端深度神经网络:ICCV2019论文解读

    点云配准的端到端深度神经网络:ICCV2019论文解读 DeepVCP: An End-to-End Deep Neural Network for Point Cloud Registration ...

  7. 图像分类:CVPR2020论文解读

    图像分类:CVPR2020论文解读 Towards Robust Image Classification Using Sequential Attention Models 论文链接:https:// ...

  8. CVPR2020论文解读:手绘草图卷积网络语义分割

    CVPR2020论文解读:手绘草图卷积网络语义分割 Sketch GCN: Semantic Sketch Segmentation with Graph Convolutional Networks ...

  9. CVPR2020论文解读:3D Object Detection三维目标检测

    CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...

最新文章

  1. php 读取excel转html,PHPExcel 转HTML
  2. centernet2 win10使用笔记
  3. 004_常用浏览器内核
  4. android fragment传递数据,Android 两个Fragment之间传递数据实例详解
  5. 2.Nginx学习-The HTTP Core module
  6. Android之圆角矩形
  7. 用calloc()函数分配内存
  8. 支付宝上线长辈模式: 字体图标加大 去除了营销推送
  9. php 错误500排错,如何排查Web服务器HTTP ERROR 500的错误?
  10. webstorm主题网址+使用方法
  11. 毕业论文格式大全、排版技巧及常见问题汇总
  12. linux windows网络工程师,2020年软考中级网络工程师考点:Linux系统
  13. 如何理解word2vec,以及相应库的使用
  14. [work] 清华朱军 NIPS 2017对抗样本攻防竞赛总结(附学习资料)
  15. cents 7.0命令
  16. CocosCreator Effect (Shader) - 反九宫格就(Sliced)补偿
  17. 7-1 计算职工工资
  18. Ubuntu18.04提示adb设备没有权限
  19. 学习安装java运行环境
  20. Kylin作用是什么?

热门文章

  1. react签名+上传base64图片接口入参处理
  2. 无用代码去哪了?项目减重之 rollup 的 Tree shaking
  3. DLL 注入技术的 N 种姿势
  4. 【Docker_Swarm】Swarm 集群创建,从“0”到“1”
  5. 瑶镶富资深用户给大家分享现在自媒体普遍的运营模式
  6. 2019版尚硅谷Java入门视频项目三中的个人出现的报错Cannot resolve symbol ‘PC‘解决方法 ——idea工具
  7. CloudCompare功能介绍-Label Connected Components
  8. pb 如何导出csv_基金定投篇—2??长投温度如何计算?
  9. 鸿蒙会干掉安卓吗?刚刚 ,首款搭载华为鸿蒙OS终端正式亮相!
  10. block io生命历程