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. (C语言)每日代码||2023.12.23||for循环的循环条件部分可以是数字

    #include <stdio.h> int main() { int i = 3; for (i; i; i--) { printf("%d\n", i); } // ...

  2. ABC 311 A - E

    ABC 311 A - E 不提供代码 A 题意:求一个字符串的第一个 ABC 最早出现的位置,可以打乱顺序,可以间隔 建立三个变量,然后以此判断即可,直到三种字符都出现就可以了 B 题意:给定每个人 ...

  3. 小知识:Exadata平台去掉密码输错延迟10分钟登录

    生产环境不评价,若是测试环境实在受不了偶尔一次因为密码输错就要等待10分钟才能登陆的限制. 那测试环境下,如何关闭这个限制呢?很简单: # vi /etc/pam.d/sshd --找到并注释掉下面这 ...

  4. frmClientDm.ItemInLogShowAdq.Delete 报【BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。】

    当Adoquery 中只有一条数据库的时候,这个时候删除 就会报 :BOF 或 EOF 中有一个是"真",或者当前的记录已被删除,所需的操作要求一个当前的记录.这个错误 导致这个错 ...

  5. Linux--split命令(将一个大文件拆分成多个小文件)

    一.split命令简介 split是Linux系统中的一个文件拆分命令,它可以将一个大文件拆分成多个小文件.这对于处理大型文件,或者需要将数据分解到多个文件中的场景非常有用. 二.split命令的使用 ...

  6. [Ngbatis源码学习][Spring] Spring 的资源管理 ResourceLoader

    在学习Ngbatis的源码时,看到了有关xml文件的加载,涉及到了资源的加载,对相关知识进行总结与整理. 1. 相关类 Resource AbstractResource ResourceLoader ...

  7. Python异步编程原理篇之IO多路复用模块selector

    selector 简介 selector 是一个实现了IO复用模型的python包,实现了IO多路复用模型的 select.poll 和 epoll 等函数. 它允许程序同时监听多个文件描述符(例如套 ...

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

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

  9. RunnerGo低代码测试体验

    RunnerGo是基于go语言自研的一款企业级全栈式测试平台,采用Apache-2.0 license开源协议,涵盖接口测试.性能测试.UI测试和项目管理等功能,并独创"拖拉拽"的 ...

  10. 糟糕,CPU100%了!!!

    前言 cpu使用率100%问题,是一个让人非常头疼的问题.因为出现这类问题的原因千奇百怪,最关键的是它不是必现的,有可能是系统运行了一段时间之后,在突然的某个时间点出现问题. 今天特地把我和同事,之前 ...