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. HarmonyOS 开发入门(一)

    HarmonyOS 开发入门(一) 日常逼逼叨 因为本人之前做过一些Android相关的程序开发,对移动端的开发兴趣比较浓厚,近期也了解到了一些关于华为HarmonyOS 4.0 的事件热点,结合黑马 ...

  2. IDEA中使用ChatGPT

    IDEA中使用ChatGPT 在IDEA中安装ChatGPT插件,可以帮助写基础逻辑代码,提高工作效率和学习效率,有兴趣可以玩一下. 插件名为 Bito. 1. 什么是Bito Bito是一款在Int ...

  3. JS leetcode 反转字符串 题解分析

    壹 ❀ 引 今天做的一道题非常简单,原题来自leetcode第344题反转字符串,题目如下: 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外 ...

  4. AIR32F103(二) Linux环境和LibOpenCM3项目模板

    目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告 AIR32F103(二) Linux环境和LibOpenCM3项目模板 AIR32F103(三) Linux环境基于标准外 ...

  5. Swoole从入门到入土(28)——协程[核心API]

    本节专门介绍swoole提供的协程机制中核心的API 类方法: 1) set():协程设置,设置协程相关选项. Swoole\Coroutine::set(array $options); 2) ge ...

  6. java generic 介绍

    一 介绍: 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的"任意化","任意化"带来的缺点是要做显式的强制类型转换, ...

  7. centos7安装postgresql9.6

    1.安装yum源 yum install -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg- ...

  8. 细说Spring Boot初始化DispatcherServlet

    DispatcherServlet概述 在Spring Boot框架未出现之前,要开发一个基于Spring MVC框架的项目,通常需要在Java web项目的描述符文件web.xml中添加如下配置: ...

  9. 【Azure 存储服务】记一次调用Storage Blob API使用 SharedKey Authorization出现的403错误

    问题描述 使用Azure Storag Blob REST API上传文件,用SharedKey作为Authorization出现403错误. 错误消息 b'\xef\xbb\xbf<?xml ...

  10. 【Azure 应用服务】Azure Function 不能被触发

    问题描述 Azure Function 不能被Postman 触发,错误信息如下: Error: write EPROTO 4020778632:error:100000f7:SSL routines ...