https://blog.csdn.net/saw009/article/details/80590245

关于LeNet-5卷积神经网络

S2层与C3层连接的参数计算的思考???

首先图1是LeNet-5的整体网络结构图

图1 LeNet-5结构

该神经网络共有7层(不计输入层),输入图像大小为32×32。

层编号特点:英文字母+数字

英文字母代表以下一种:

C→卷积层、S→下采样层(池化)、F→全连接层

数字代表当前是第几层,而非第几卷积层(池化层.ec)

术语解释:参数→权重w与偏置b

连接数→连线数

参数计算:每个卷积核对应于一个偏置b,卷积核的大小对应于权重w的个数(特别注意通道数)

C1层:使用6个5×5大小的卷积核,padding=0,stride=1进行卷积,得到6个28×28大小的特征图(32-5+2*0)/1+1=28

参数个数:(5*5+1)*6=156,其中5*5为卷积核的25个参数,1为偏置

连接数: 156*28*28=122304,其中156为卷积过程连线数,28*28为输出特征层每一个像素都由前面卷积得到

S2层:使用2×2大小的卷积核进行池化,padding=0,stride=2,得到6个14×14大小的特征图(28-2+2*0)/2+1=14

参数个数:(1+1)*6=12,其中第一个1为最大池化所对应的2*2感受野中最大的那个数的权重,第二个1为偏置

连接数: (2*2+1)*14*14*6= 5880,虽然只选取2*2感受野中最大的那个数,但也存在2*2的连接数,即最大的权重为1,其余的为0

C3层:该层使用16个5*5大小的卷积核,padding=0,stride=1,卷积后得到16个10*10的特征图,(14-5+2*0)/1+1=10

该层第一个难点:6个输入图如何通过卷积得到16个特征图?

如图2所示,C3的前六个特征图(0,1,2,3,4,5)由S2的相邻三个特征图作为输入,接下来的6个特征图(6,7,8,9,10,11)由S2的相邻四个特征图作为输入,12,13,14号特征图由S2间断的四个特征图作为输入,15号特征图由S2全部(6个)特征图作为输入。

图2

该层第二个难点(这里我觉得最难理解,断断续续理解了几乎小半年):通过S2的输入,如何卷积得到C3的一个特征图呢?

我用C3层0号特征图举例,它由S2层0,1,2号特征图作为输入,由于C3层共有16个卷积核,即C3每一个特征图是由一个卷积核对S2层相应的输入特征图卷积得到的,如图3所示。

图3

这里值得注意的是,上图的卷积核是一个5×5大小具有3个通道,每个通道各不相同,这也是下面计算时5*5后面还要乘以3,4,6的原因。具体可参考多通道卷积。

参数个数:(5*5*3+1)*6+(5*5*3+1)*6+(5*5*4+1)*3+(5*5*6+1)=1516

连接数:1516*10*10=151600

S4层:依然是池化层,使用16个2×2大小的卷积核进行池化,padding=0,stride=2,得到16个5×5大小的特征图(10-2+2*0)/2+1=5

参数个数:(1+1)*16=32

连接数:  (2*2+1)*16*5*5=2000

C5层:使用120个5*5卷积核对S4层16个特征图进行卷积,padding=0,stride=1,得到120个1*1大小的特征图,(5-5+2*0)/1+1=1

这里的计算跟C3相同,也是多通道卷积,因此5*5后面乘以16.

参数个数:(5*5*16+1)*120=48120

连接数:  (5*5*16+1)*120*1*1=48120

F6层:共有84个神经元,与C5层进行全连接,即每个神经元都与C5层的120个特征图相连。

参数个数:(120+1)*84=10164

连接数:  (120+1)*84=10164

Output层:输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每个单元由F6层84个神经元作为输入,输出0-9十个手写数字识别的结果

参数个数:84*10=840

连接数:  84*10=840

总结:本人初学深度学习,尚有太多不懂的地方,上述若有错误的地方,望请各位批评指正。在学习lenet-5的过程中,发现了一个可视化的网站:http://scs.ryerson.ca/~aharley/vis/conv/flat.html

http://scs.ryerson.ca/~aharley/vis/conv/

如果打不开,请多换几个浏览器

多通道卷积:可以看出卷积核W0,W1各自的三个通道各不相同

最后,引用了几个参考文章的链接:

http://blog.csdn.net/zhangjunhit/article/details/53536915

https://www.jianshu.com/p/ce609f9b5910

http://blog.csdn.net/qiaofangjie/article/details/16826849

https://www.zybuluo.com/hanbingtao/note/485480
---------------------
作者:saw009
来源:CSDN
原文:https://blog.csdn.net/saw009/article/details/80590245
版权声明:本文为博主原创文章,转载请附上博文链接!

关于LeNet-5卷积神经网络 S2层与C3层连接的参数计算的思考???的更多相关文章

  1. LeNet - Python中的卷积神经网络

    本教程将  主要面向代码,  旨在帮助您 深入学习和卷积神经网络.由于这个意图,我  不会花很多时间讨论激活功能,池层或密集/完全连接的层 - 将来会有  很多教程在PyImageSearch博客上将 ...

  2. 卷积神经网络Lenet-5实现

    卷积神经网络Lenet-5实现 原文地址:http://blog.csdn.net/hjimce/article/details/47323463 作者:hjimce 卷积神经网络算法是n年前就有的算 ...

  3. 卷积神经网络CNN全面解析

    卷积神经网络(CNN)概述 从多层感知器(MLP)说起 感知器 多层感知器 输入层-隐层 隐层-输出层 Back Propagation 存在的问题 从MLP到CNN CNN的前世今生 CNN的预测过 ...

  4. TensorFlow实战之实现AlexNet经典卷积神经网络

    本文根据最近学习TensorFlow书籍网络文章的情况,特将一些学习心得做了总结,详情如下.如有不当之处,请各位大拿多多指点,在此谢过. 一.AlexNet模型及其基本原理阐述 1.关于AlexNet ...

  5. 深度学习之 TensorFlow(四):卷积神经网络

    基础概念: 卷积神经网络(CNN):属于人工神经网络的一种,它的权值共享的网络结构显著降低了模型的复杂度,减少了权值的数量.卷积神经网络不像传统的识别算法一样,需要对数据进行特征提取和数据重建,可以直 ...

  6. 卷积神经网络(CNN)代码实现(MNIST)解析

    在http://blog.csdn.net/fengbingchun/article/details/50814710中给出了CNN的简单实现,这里对每一步的实现作个说明: 共7层:依次为输入层.C1 ...

  7. tensorflow学习笔记——图像识别与卷积神经网络

    无论是之前学习的MNIST数据集还是Cifar数据集,相比真实环境下的图像识别问题,有两个最大的问题,一是现实生活中的图片分辨率要远高于32*32,而且图像的分辨率也不会是固定的.二是现实生活中的物体 ...

  8. 【神经网络与深度学习】卷积神经网络(CNN)

    [神经网络与深度学习]卷积神经网络(CNN) 标签:[神经网络与深度学习] 实际上前面已经发布过一次,但是这次重新复习了一下,决定再发博一次. 说明:以后的总结,还应该以我的认识进行总结,这样比较符合 ...

  9. 卷积神经网络基础(CNN)【转载】

    作者: Sanjay Chan [ http://blog.csdn.net/chenzomi ] 背景 之前在网上搜索了好多好多关于CNN的文章,由于网络上的文章很多断章取义或者描述不清晰,看了很多 ...

随机推荐

  1. 【RF库XML测试】parse xml

    Name:Parse XmlSource:XML <test library>Arguments:[ source | keep_clark_notation=False ]Parses ...

  2. 使用Xcode自带的单元测试

    今年苹果推出的iOS8和Swift的新功能让人兴奋.同时,苹果对于Xcode的测试工具的改进却也会影响深远.现在我们来看下XCTest,Xcode内置的测试框架.以及,Xcode6新增的XCTestE ...

  3. N76E003的学习之路(ADC简单小例程篇)

    N76E003内嵌12位逐次逼近寄存器型(SAR)的模拟数字转换器(ADC).模数转换模块负责将管脚上的模拟信号转换为12位二进制数据.N76E003支持8通道单端输入模式.内部带隙电压(band-g ...

  4. vue再次入手(数据传递①)

    准备 之前使用vue.js完成一个项目之后,对其还是充满着无限兴趣,于是不妨利用碎片时间再次研究一下这个“令人着迷”的js框架. 1.新建一个基于vue的项目,具体方法不再赘述,请看这里:http:/ ...

  5. java虚拟机性能监控调优及原则

    摘抄 http://uule.iteye.com/blog/2114697 一.JVM内存模型及垃圾收集算法  1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老 ...

  6. 【vue学习】vue中怎么引用laydate.js日期插件

    此贴意在解决一个妹子的问题 https://q.cnblogs.com/q/101462 下载js包 http://www.layui.com/laydate/ 将laydate下载的包解压放入sta ...

  7. @components问题

    场景:在引入组件的时候,希望解决"../components/page/member"这样的引入: 希望:像vue的项目中用@components/page/member引入组件 ...

  8. LeetCode 12 Integer to Roman (整数转罗马数字)

    题目链接: https://leetcode.com/problems/integer-to-roman/?tab=Description   String M[] = {"", ...

  9. 浅谈P2P、P2C 、O2O 、B2C、B2B、 C2C的区别

    相信有很多人对P2P.P2C .O2O .B2C.B2B. C2C不是很熟悉,甚至是云里雾里,每天看着这些常见又陌生的名词,如果有人跟你说 让你解释它的含义,金融的小伙伴们是不是瞬间石化了,尤其是做淘 ...

  10. ELK系列四:Logstash的在ELK架构中的使用和简单的输入

    1.ELK架构中Logstash的位置: 1.1.小规模集群部署(学习者适用的架构) 简单的只有Logstash.Elasticsearch.Kibana,由Logstash收集日志或者流量信息,过滤 ...