首页 > 其他分享 >LeNet详解

LeNet详解

时间:2023-04-06 23:33:22浏览次数:54  
标签:map 16 卷积 S2 28 详解 参数 LeNet

LeNet详解

 LeNet-5是一个较简单的卷积神经网络。下图显示了其结构:输入的二维图像,先经过两次卷积层到池化层,再经过全连接层,最后使用softmax分类作为输出层。关于CNN参见:https://blog.csdn.net/qq_42570457/article/details/81458077

网络解析(一):LeNet-5详解

       LeNet-5 这个网络虽然很小,但是它包含了深度学习的基本模块:卷积层,池化层,全连接层。是其他深度学习模型的基础, 这里我们对LeNet-5进行深入分析。同时,通过实例分析,加深对与卷积层和池化层的理解。

网络解析(一):LeNet-5详解

       LeNet-5共有7层,不包含输入,每层都包含可训练参数;每个层有多个Feature Map,每个FeatureMap通过一种卷积滤波器提取输入的一种特征,然后每个FeatureMap有多个神经元。

各层参数详解:

1、INPUT层-输入层

       首先是数据 INPUT 层,输入图像的尺寸统一归一化为32*32。

       注意:本层不算LeNet-5的网络结构,传统上,不将输入层视为网络层次结构之一。

2、C1层-卷积层

      输入图片:32*32

      卷积核大小:5*5

      卷积核种类:6

      输出featuremap大小:28*28 (32-5+1)=28

      神经元数量:28*28*6

      可训练参数:(5*5+1) * 6(每个滤波器5*5=25个unit参数和一个bias参数,一共6个滤波器)

      连接数:(5*5+1)*6*28*28=122304

     详细说明:对输入图像进行第一次卷积运算(使用 6 个大小为 5*5 的卷积核),得到6个C1特征图(6个大小为28*28的 feature maps, 32-5+1=28)。我们再来看看需要多少个参数,卷积核的大小为5*5,总共就有6*(5*5+1)=156个参数,其中+1是表示一个核有一个bias。对于卷积层C1,C1内的每个像素都与输入图像中的5*5个像素和1个bias有连接,所以总共有156*28*28=122304个连接(connection)。有122304个连接,但是我们只需要学习156个参数,主要是通过权值共享实现的。

3、S2层-池化层(下采样层)

      输入:28*28

      采样区域:2*2

      采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid

      采样种类:6

      输出featureMap大小:14*14(28/2)

      神经元数量:14*14*6

      可训练参数:2*6(和的权+偏置)

      连接数:(2*2+1)*6*14*14

      S2中每个特征图的大小是C1中特征图大小的1/4。

       详细说明:第一次卷积之后紧接着就是池化运算,使用 2*2核 进行池化,于是得到了S2,6个14*14的 特征图(28/2=14)。S2这个pooling层是对C1中的2*2区域内的像素求和乘以一个权值系数再加上一个偏置,然后将这个结果再做一次映射。于是每个池化核有两个训练参数,所以共有2x6=12个训练参数,但是有5x14x14x6=5880个连接。

4、C3层-卷积层

       输入:S2中所有6个或者几个特征map组合

      卷积核大小:5*5

      卷积核种类:16

      输出featureMap大小:10*10 (14-5+1)=10

      C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合。

       存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。则:可训练参数:6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516

       连接数:10*10*1516=151600

       详细说明:第一次池化之后是第二次卷积,第二次卷积的输出是C3,16个10x10的特征图,卷积核大小是 5*5. 我们知道S2 有6个 14*14 的特征图,怎么从6 个特征图得到 16个特征图了? 这里是通过对S2 的特征图特殊组合计算得到的16个特征图。具体如下:

网络解析(一):LeNet-5详解

       C3的前6个feature map(对应上图第一个红框的6列)与S2层相连的3个feature map相连接(上图第一个红框),后面6个feature map与S2层相连的4个feature map相连接(上图第二个红框),后面3个feature map与S2层部分不相连的4个feature map相连接,最后一个与S2层的所有feature map相连。卷积核大小依然为5*5,所以总共有6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516个参数。而图像大小为10*10,所以共有151600个连接。

网络解析(一):LeNet-5详解

        C3与S2中前3个图相连的卷积结构如下图所示:

网络解析(一):LeNet-5详解

       上图对应的参数为 3*5*5+1,一共进行6次卷积得到6个特征图,所以有6*(3*5*5+1)参数。 为什么采用上述这样的组合了?论文中说有两个原因:1)减少参数,2)这种不对称的组合连接的方式有利于提取多种组合特征。

5、S4层-池化层(下采样层)

       输入:10*10

       采样区域:2*2

      采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid

      采样种类:16

      输出featureMap大小:5*5(10/2)

      神经元数量:5*5*16=400

      可训练参数:2*16=32(和的权+偏置)

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

      S4中每个特征图的大小是C3中特征图大小的1/4

      详细说明:S4是pooling层,窗口大小仍然是2*2,共计16个feature map,C3层的16个10x10的图分别进行以2x2为单位的池化得到16个5x5的特征图。这一层有2x16共32个训练参数,5x5x5x16=2000个连接。连接的方式与S2层类似。

6、C5层-卷积层

     输入:S4层的全部16个单元特征map(与s4全相连)

     卷积核大小:5*5

     卷积核种类:120

     输出featureMap大小:1*1(5-5+1)

     可训练参数/连接:120*(16*5*5+1)=48120

     详细说明:C5层是一个卷积层。由于S4层的16个图的大小为5x5,与卷积核的大小相同,所以卷积后形成的图的大小为1x1。这里形成120个卷积结果。每个都与上一层的16个图相连。所以共有(5x5x16+1)x120 = 48120个参数,同样有48120个连接。C5层的网络结构如下:

网络解析(一):LeNet-5详解

7、F6层-全连接层

      输入:c5 120维向量

      计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数输出。

      可训练参数:84*(120+1)=10164

      详细说明:6层是全连接层。F6层有84个节点,对应于一个7x12的比特图,-1表示白色,1表示黑色,这样每个符号的比特图的黑白色就对应于一个编码。该层的训练参数和连接数是(120 + 1)x84=10164。ASCII编码图如下:

网络解析(一):LeNet-5详解

     F6层的连接方式如下:

网络解析(一):LeNet-5详解

8、Output层-全连接层

       Output层也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i。采用的是径向基函数(RBF)的网络连接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:

网络解析(一):LeNet-5详解

     上式w_ij 的值由i的比特图编码确定,i从0到9,j取值从0到7*12-1。RBF输出的值越接近于0,则越接近于i,即越接近于i的ASCII编码图,表示当前网络输入的识别结果是字符i。该层有84x10=840个参数和连接。

网络解析(一):LeNet-5详解

上图是LeNet-5识别数字3的过程。

总结

  • LeNet-5是一种用于手写体字符识别的非常高效的卷积神经网络。
  • 卷积神经网络能够很好的利用图像的结构信息。
  • 卷积层的参数较少,这也是由卷积层的主要特性即局部连接和共享权重所决定。

 参考:http://cuijiahua.com/blog/2018/01/dl_3.html

标签:map,16,卷积,S2,28,详解,参数,LeNet
From: https://www.cnblogs.com/jiftle/p/17294605.html

相关文章

  • 万字详解 | Java 流式编程
    概述StreamAPI是Java中引入的一种新的数据处理方法。它提供了一种高效且易于使用的方法来处理数据集合。StreamAPI支持函数式编程,可以让我们以简洁、优雅的方式进行数据操作,还有使用Stream的两大原因:在大多数情况下,将对象存储在集合中就是为了处理它们,因此你会发现你把......
  • Android service的完全详解
    Service全部内容基本会在本篇涉及到,我们将围绕以下主要知识点进行分析:Service简单概述Service在清单文件中的声明Service启动服务实现方式及其详解Service绑定服务的三种实现方式关于启动服务与绑定服务间的转换问题前台服务以及通知发送服务Service与线程Thread的区别管理......
  • redis基础数据结构详解
    一.redis为什么快基于内存的存储虽然是单线程,但是采取了多路复用,可以高效的处理网络并发良好的数据结构设计二.redis基础数据结构redis有五种基础的数据结构string,list,set,zset,hashredis所有的数据结构的key都是string类型,我们所说的数据结构都是指value的数据结构......
  • STM32]GPIO工作原理详解
     GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同......
  • 【Python从零到壹】Python条件语句详解
    欢迎大家来到互联网老辛的专栏《Python从零到壹》,在这里我将分享约300篇Python系列文章,所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。从事教学工作以来,越来越觉得时间的宝贵,每届学生都要讲重复的课,......
  • C#高级--反射详解
    原文:C#高级--反射详解_c#反射_李宥小哥的博客-CSDN博客C#高级–反射详解零、文章目录一、反射是什么1、C#编译运行过程高级语言->编译->dll/exe文件->CLR/JIT->机器码 2、原理解析metadata:元数据数据清单,记录了dll中包含了哪些东西,是一个描述。IL:中间语言,编译把高级语言编译......
  • python实现各种算法详解,以及时间复杂度
    python实现各种排序1.快速排序1:首先取序列第一个元素为基准元素pivot=R[low]。i=low,j=high。2:从后向前扫描,找小于等于pivot的数,如果找到,R[i]与R[j]交换,i++。3:从前往后扫描,找大于pivot的数,如果找到,R[i]与R[j]交换,j--。4:重复2~3,直到i=j,返回该位置mid=i,该位置正好为pivot......
  • Linux IO实时监控iostat命令详解
    简介iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 语法iostat[-c][-d][-h][-N][-k|-m][-t][......
  • 深度学习基础入门篇[二]:机器学习常用评估指标:AUC、mAP、IS、FID、Perplexity、BLEU、
    A.深度学习基础入门篇[二]:机器学习常用评估指标:AUC、mAP、IS、FID、Perplexity、BLEU、ROUGE等详解1.基础指标简介机器学习的评价指标有精度、精确率、召回率、P-R曲线、F1值、TPR、FPR、ROC、AUC等指标,还有在生物领域常用的敏感性、特异性等指标。在分类任务中,各指标的计算......
  • 【过滤器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介过滤器模式(FilterPattern)或标准模式(CriteriaPattern),是一种结构型模式。这种模式允许使用不同的标准条件来过滤一组对象,并通过逻辑运算的方式把各条件连接起来,它结合多个标准来获得单一标准。例子将创建一个Person对象、Criteria接口和实现了该接口的实体类,来过滤Perso......