PS:要转载请注明出处,本人版权所有。

PS: 这个只是基于《我自己》的理解,

如果和你的原则及想法相冲突,请谅解,勿喷。

前置说明

  本文作为本人csdn blog的主站的备份。(BlogID=047)

  本文发布于 2017-12-15 11:32:12,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=047)

环境说明

  无

前言


  Notes:本人此前只对opencv处理图像有一定的了解。

  从毕业后开始,自己工作的周围就出现了无数次计算机视觉相关的内容。而我的工作也和这些有一定的交叉。虽然在学校对并行计算以及AI有一定所闻,但是都只是听说而已,以为离我们还很远,出来才知道,它们已经来了。此文由网上众多Lenet-5相关的文章和论文原文经过我的组合和理解后写出,只作为我的一个学习笔记。

LeNet-5 分析


  LeNet-5简介:

    CNN里面的一篇代表性文章,主要是涵盖了现在CNN的卷积、池化、全连接等概念,同时其层数很浅,方便我学习。(这里主要基于LeNet5论文讲解,现在的caffe和tf上带的LeNet-5工程是和原文不同的,具体在后序两篇文章分析。)

LeNet-5网络简介

  此截图来至于,LeNet-5论文原文。

  主要由以下构成:

    INPUT输入、C1卷积层、S2池化层((求和取平均)*w+b)、C3卷积层(此层是按照一定的规则卷积,所以不易理解,和C1,C5基本卷积操作不同)、S4池化层(S2类似)、C5卷积层、F6全连接映射的是一个字符表、OUTPUT打分输出(RBF)

  结构分析:

Input层

size:32 * 32

C1层

卷积核(CC):5 * 5
stride:1
pad:0
featuremapcount:6
featuremapsize:28 * 28
(计算方法:32-5+1= 28)
(计算公式:O=(I+2 * pad-CC)/ stride+1)
参数个数:6 * (5 * 5+1)=156
连接个数:(5 * 5+1) * 28 * 28 * 6
(featuremap每个像素和5*5个w和一个b有一个连接。w是权重,b是偏置)

S2层

核:2*2
stride:2
featuremapcount:6
featuremapsize:14 * 14
(计算方法:28/2,对核进行求和,然后乘以w,加上一个偏置)
参数个数:(1+1) * 6=12
连接数:(4 * 1+1) * 14 * 14 * 6=5880
(不同的人有不同的理解,反正就是featuremap每个像素和上层的连线,这里是:4个像素求和平均乘以w加上一个b)

C3层

卷积核(CC):5 * 5
stride:1
pad:0
featuremapcount:16
(计算方法:下图每列对应一个featuremap,分为四组,0-5(分别和上层3个featuremap计算),6-11(同理),12-14(同理),15(同理)。)
featuremapsize:10 * 10
(14-5+1=10)
参数个数:6*(3 * 5 * 5+1)+6* (4* 5* 5+1)+3*(4 *5* 5+1)+1* (6* 5* 5+1)=1516(分组计算)
连接个数:1516* 10* 10=151600(同上)

S4层

核:2*2
stride:2
featuremapcount:16
featuremapsize:5 * 5
参数个数:(1+1) * 16=12(2018/9/28,感谢网友指正此处参数个数)
连接数:(4* 1+1)* 5* 5* 16=2000

C5层

卷积核(CC):5* 5
stride:1
pad:0
featuremapcount:120
featuremapsize:1* 1
参数个数:(5* 5* 16+1)* 120=48120
(此处由于每个像素都和前一层16个featuremap相连)
连接数:48120* 1* 1=48120

F6层

featuremapcount:84
(为了输出选的特定的数)
featuremapsize:1* 1
参数个数:84* (120* 1+1)=10164
(上层为1* 1,全连接,输出为84* 1* 1)
连接数:84*(120 * 1+1)* 1 * 1=10164

Output层

参数个数:84* 10=840
连接数:84* 10=840=840
说明:我只知道这个打分函数叫做RBF,具体就是计算输入和参数的向量距离,距离越近,就越有可能是当前数字。对于此函数的更深原理,我看了个大概,有兴趣的可以去研究。

后记


  只要具备CNN基本理论知识(卷积核、步长、pad、池化、卷积、全连接)都可以慢慢的理解这个东西。由于我是新手,我知道新手对哪些很疑惑,所以对每一个值的计算我都有详细的写出,包括原理和出处。

参考文献


打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)

PS: 请尊重原创,不喜勿喷。

PS: 要转载请注明出处,本人版权所有。

PS: 有问题请留言,看到后我会第一时间回复。

LeNet-5 论文及原理分析(笨鸟角度)的更多相关文章

  1. Java程序员从笨鸟到菜鸟全部博客目录

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 大学上了一年半,接触java也一年半了,虽然中间也有其他东西的学习,但是还是以java为主 ...

  2. 《Java程序员由笨鸟到菜鸟》

    <Java程序员由笨鸟到菜鸟> 在众多朋友的支持和鼓励下,<Java程序员由菜鸟到笨鸟>电子版终于和大家见面了.本电子书涵盖了从java基础到javaweb开放框架的大部分内容 ...

  3. Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在曾经的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本的语法 ...

  4. Servlet过滤器介绍之原理分析

    zhangjunhd 的BLOG     写留言去学院学习发消息 加友情链接进家园 加好友 博客统计信息 51CTO博客之星 用户名:zhangjunhd 文章数:110 评论数:858 访问量:19 ...

  5. Hadoop数据管理介绍及原理分析

    Hadoop数据管理介绍及原理分析 最近2014大数据会议正如火如荼的进行着,Hadoop之父Doug Cutting也被邀参加,我有幸听了他的演讲并获得亲笔签名书一本,发现他竟然是左手写字,当然这个 ...

  6. 无线网络中的MIMO与OFDM技术原理分析

    无线网络中的MIMO与OFDM技术原理分析CNET中国·ZOL 07年08月14日 [原创] 作者: 中关村在线 张伟 从最早的红外线技术到目前被寄予重望的WIFI,无线技术的进步推动我们的网络一步步 ...

  7. Handler系列之原理分析

    上一节我们讲解了Handler的基本使用方法,也是平时大家用到的最多的使用方式.那么本节让我们来学习一下Handler的工作原理吧!!! 我们知道Android中我们只能在ui线程(主线程)更新ui信 ...

  8. Java NIO使用及原理分析(1-4)(转)

    转载的原文章也找不到!从以下博客中找到http://blog.csdn.net/wuxianglong/article/details/6604817 转载自:李会军•宁静致远 最近由于工作关系要做一 ...

  9. 原子类java.util.concurrent.atomic.*原理分析

    原子类java.util.concurrent.atomic.*原理分析 在并发编程下,原子操作类的应用可以说是无处不在的.为解决线程安全的读写提供了很大的便利. 原子类保证原子的两个关键的点就是:可 ...

  10. Android中Input型输入设备驱动原理分析(一)

    转自:http://blog.csdn.net/eilianlau/article/details/6969361 话说Android中Event输入设备驱动原理分析还不如说Linux输入子系统呢,反 ...

随机推荐

  1. Mygin之错误恢复Recover中间件

    本篇是mygin这个系列的最后一篇.如果想自己动手实现一个类似Gin的Web框架,建议从 mgin第一篇开始, 总代码行数有效行数只有600多行 github源码 mygin 目的 实现错误处理机制 ...

  2. Linux 中通过虚拟地址获取物理地址并锁定

    在 Linux 开发过程中,申请内存后,某些时候需要用物理地址传给其他外设进行写入或者读取操作,同时考虑到防止被操作系统 sawp,导致实际的物理地址发生变化,从而在操作对应的虚拟地址时无法正常运行等 ...

  3. 小知识:开启NTP服务并设置为开机启动

    我的一套测试环境发现时间慢了10分钟,影响我做各类测试. 首先就想到NTP服务,发现已安装NTP安装包,也有默认的NTP配置文件,只是没有启用. 用到的相关命令参考如下: [root@bogon ~] ...

  4. 【译】VisualStudio 17.9预览3带来了令人兴奋的代码搜索改变

    随着 VisualStudio17.9预览版3的发布,我们为代码搜索(也称为 All-In-One Search)带来了一些令人兴奋的增强.自从我们上次更新搜索体验以来,我们一直在努力改进体验,并想出 ...

  5. Visual Studio部署matplotlib绘图库的C++版本

      本文介绍在Visual Studio软件中配置.编译C++环境下matplotlibcpp库的详细方法.   matplotlibcpp库是一个C++环境下的绘图工具,其通过调用Python接口, ...

  6. 【Unity3D】选中物体消融特效

    1 消融特效原理 ​ 消融特效 中基于 Shader Graph 实现了消融特效,本文将基于 Shader 实现消融特效. ​ 当前实现消融特效的方法主要有 Alpha 测试消融.clip(或 dis ...

  7. 我们在SqlSugar开发框架中,用到的一些设计模式

    我们在<SqlSugar开发框架>中,有时候都会根据一些需要引入一些设计模式,主要的目的是为了解决问题提供便利和代码重用等目的.而不是为用而用,我们的目的是解决问题,并在一定的场景下以水到 ...

  8. jsp中无法识别EL表达式问题

    今天在开发系统时需要在JSP中遍历List<javabean>,其中用到了EL表达式:${item.value} 页面死活不出数据,只显示表达式本身:${item.value}. 页面代码 ...

  9. [BUUCTF][Web][极客大挑战 2019]Secret File 1

    打开靶机对应的url 右键查看网页源代码,查看到一个访问路径 /Archive_room.php 构造url访问一下 http://3bfaebad-fdfa-4226-ae0a-551f0228be ...

  10. go值接收者和指针接收者的区别

    方法的接收者 package main import ( "fmt" ) type Person struct { Name string Age int } func (p Pe ...