LeNet-5网络详解

article/2025/7/28 13:59:36

文章目录

    • 1 模型介绍
    • 2 模型结构
    • 3 模型特性

1 模型介绍

LeNet-5出自论文《Gradient-Based Learning Applied to Document Recognition》,是由 L e C u n LeCun LeCun 于1998年提出的一种用于识别手写数字和机器印刷字符的卷积神经网络,其命名来源于作者 L e C u n LeCun LeCun的名字,5则是其研究成果的代号,在LeNet-5之前还有LeNet-4和LeNet-1鲜为人知。LeNet-5阐述了图像中像素特征之间的相关性能够由参数共享的卷积操作所提取,同时使用卷积、下采样(池化)和非线性映射这样的组合结构,是当前流行的大多数深度图像识别网络的基础。

2 模型结构

图1 LeNet-5网络结构图

图1 LeNet-5网络结构图

LeNet-5虽然是早期提出的一个小网络,但是却包含了深度学习卷积神经网络的基本模块:卷积层池化层全连接层。如图1所示,LeNet-5一共包含7层(输入层不作为网络结构),分别由2个卷积层、2个池化层和3个连接层组成,网络的参数配置如表1所示,其中下采样层和全连接层的核尺寸分别代表采样范围和连接矩阵的尺寸。

表1 LeNet-5网络参数配置

Layer NameKernel SizeKernel NumStridePaddingInput SizeOutput SizeTrainable params
C 1 C_1 C1 5 × 5 5\times5 5×5 6 6 6 1 1 1 0 0 0 32 × 32 × 1 32\times32\times1 32×32×1 28 × 28 × 6 28\times28\times6 28×28×6 ( 5 × 5 × 1 + 1 ) × 6 (5\times5\times1+1)\times6 (5×5×1+1)×6
S 2 S_2 S2 2 × 2 2\times2 2×2 / / / 2 2 2 0 0 0 28 × 28 × 6 28\times28\times6 28×28×6 14 × 14 × 6 14\times14\times6 14×14×6 ( 1 + 1 ) × 6 (1+1)\times6 (1+1)×6
C 3 C_3 C3 5 × 5 5\times5 5×5 16 16 16 1 1 1 0 0 0 14 × 14 × 6 14\times14\times6 14×14×6 10 × 10 × 16 10\times10\times16 10×10×16 1516 1516 1516
S 4 S_4 S4 2 × 2 2\times2 2×2 / / /2 0 0 0 10 × 10 × 16 10\times10\times16 10×10×16 5 × 5 × 16 5\times5\times16 5×5×16 ( 1 + 1 ) × 16 (1+1)\times16 (1+1)×16
C 5 C_5 C5 5 × 5 5\times5 5×5 120 120 1201 0 0 0 5 × 5 × 16 5\times5\times16 5×5×16 1 × 1 × 120 1\times1\times120 1×1×120 ( 5 × 5 × 16 + 1 ) × 120 (5\times5\times16+1)\times120 (5×5×16+1)×120
F 6 F_6 F6 / / / / / / / / / / / / 1 × 1 × 120 1\times1\times120 1×1×120 1 × 1 × 84 1\times1\times84 1×1×84 ( 120 + 1 ) × 84 (120+1)\times84 (120+1)×84
O u t p u t Output Output / / / / / / / / / / / / 1 × 1 × 84 1\times1\times84 1×1×84 1 × 1 × 10 1\times1\times10 1×1×10 ( 84 + 1 ) × 10 (84+1)\times10 (84+1)×10

接下来,分别详解各层参数

1、卷积层 C 1 C_1 C1

手写数字数据集是灰度图像,输入为 32 × 32 × 1 32\times32\times1 32×32×1的图像,卷积核大小为 5 × 5 5\times5 5×5,卷积核数量为6,步长为1,零填充。最终得到的 C 1 C_1 C1的feature maps大小为( 32 − 5 + 1 = 28 32-5+1=28 325+1=28)。可训练参数: ( 5 × 5 + 1 ) × 6 (5\times5+1)\times6 (5×5+1)×6,其中有6个滤波器,每个滤波器 5 × 5 5\times5 5×5个units参数和一个bias参数,总共需要学习156个参数,这些参数是权值共享的。

2、下采样层 S 2 S_2 S2

卷积层 C 1 C_1 C1之后接着就是池化运算,池化核大小为 2 × 2 2\times2 2×2,LeNet-5池化运算的采样方式为4个输入相加,乘以一个可训练参数,再加上一个可训练偏置,结果通过sigmoid,所以下采样的参数个数是 ( 1 + 1 ) × 6 (1+1)\times6 (1+1)×6而不是零。

3、卷积层 C 3 C_3 C3

在LeNet-5中, C 3 C_3 C3中的可训练参数并未直接连接 S 2 S_2 S2中所有的特征图(Feature Map),而是采用如图2所示的采样特征方式进行连接(稀疏连接)。具体地, C 3 C_3 C3的前6个feature map(对应图2第一个红框的前6列)与 S 2 S_2 S2层相连的3个feature map相连接(图2第一个红框),后面6个feature map与 S 2 S_2 S2层相连的4个feature map相连接(图2第二个红框),后面3个feature map与 S 2 S_2 S2层部分不相连的4个feature map相连接,最后一个与 S 2 S_2 S2层的所有feature map相连。卷积核大小依然为 5 × 5 5\times5 5×5,所以总共有 6 × ( 3 × 5 × 5 + 1 ) + 6 × ( 4 × 5 × 5 + 1 ) + 3 × ( 4 × 5 × 5 + 1 ) + 1 × ( 6 × 5 × 5 + 1 ) = 1516 6\times(3\times5\times5+1)+6\times(4\times5\times5+1)+3\times(4\times5\times5+1)+1\times(6\times5\times5+1)=1516 6×(3×5×5+1)+6×(4×5×5+1)+3×(4×5×5+1)+1×(6×5×5+1)=1516个参数。在原论文中解释了使用这种采样方式原因包含两点:限制了连接数不至于过大(当年的计算能力比较弱);强制限定不同特征图的组合可以使映射得到的特征图学习到不同的特征模式。

图2 与之间的特征图稀疏连接

图2 S 2 S_2 S2 C 3 C_3 C3之间的特征图稀疏连接

4、下采样层 S 4 S_4 S4

与下采样层 S 2 S_2 S2类似,采用大小为 2 × 2 2\times2 2×2,步距为2的池化核对输入feature maps下采样,输出feature maps大小为 5 × 5 5\times5 5×5

5、卷积层 C 5 C_5 C5

与卷积层 C 3 C_3 C3不同,卷积层 C 5 C_5 C5的输入为 S 4 S_4 S4的全部feature maps,由于 S 4 S_4 S4层的16个图的大小为 5 × 5 5\times5 5×5,与卷积核的大小相同,所以卷积后形成的图的大小为1x1。

6、全连接层 F 6 F_6 F6 O u t p u t Output Output

F 6 F_6 F6 O u t p u t Output Output层在图1中显示为全连接层,原论文中解释这里实际采用的是卷积操作,只是刚好在 5 × 5 5\times5 5×5卷积后尺寸被压缩为 1 × 1 1\times1 1×1
输出结果看起来和全连接很相似。

3 模型特性

  • 卷积网络使用一个3层的序列组合:卷积、下采样(池化)、非线性映射(LeNet-5最重要的特性,奠定了目前深层卷积网络的基础)
  • 使用卷积提取空间特征
  • 使用映射的空间均值进行下采样
  • 使用 t a n h tanh tanh s i g m o i d sigmoid sigmoid进行非线性映射
  • 多层神经网络(MLP)作为最终的分类器
  • 层间的稀疏连接矩阵以避免巨大的计算开销

http://chatgpt.dhexx.cn/article/Ei7JjmOa.shtml

相关文章

深度学习入门(一):LeNet-5教程与详解

1.什么是LeNet LeNet5诞生于1994年,是最早的卷积神经网络之一,并且推动了深度学习领域的发展。自从1988年开始,在多年的研究和许多次成功的迭代后,这项由Yann LeCun完成的开拓性成果被命名为LeNet5。 LeNet: 主要用来…

卷积神经网络(CNN)开山之作——LeNet-5。卷积神经网络基本介绍。

目录 一、LeNet-5的背景 二、传统分类算法在图像识别上的弊端 三、卷积神经网络的3个基本特征 四、LeNet-5的网络结构 1、Input layer 2、Conv1 3、Subsampling2 4、Conv3 5、Subsampling4 6、Conv5 7、FC6 8、Output7 五、LeNet-5总结 一、LeNet-5的背景 LeNet-5…

这可能是神经网络 LeNet-5 最详细的解释了!

大家好,我是红色石头! 说起深度学习目标检测算法,就不得不提 LeNet- 5 网络。LeNet-5由LeCun等人提出于1998年提出,是一种用于手写体字符识别的非常高效的卷积神经网络。出自论文《Gradient-Based Learning Applied to Document R…

c语言--使用函数输出水仙花数

函数接口定义 1、int narcissistic( int number ); 2、void PrintN( int m, int n ); 函数 narcissistic 判断 number 是否为水仙花数,是则返回1,否则返回0。 函数 PrintN 则打印开区间 (m, n) 内所有的水仙花数,每个数字占一行。 …

【C语言程序设计】C语言水仙花数,阿姆斯特朗数!

阿姆斯特朗数也就是俗称的水仙花数,是指一个三位数,其各位数字的立方和等于该数本身。 例如:153135333,所以 153 就是一个水仙花数。 求出所有的水仙花数。 算法思想 对于阿姆斯特朗数问题,根据水仙花数的定义&#x…

C语言编程练习:水仙花数

文章目录 题目描述思路结果 题目描述 水仙花数是指一个N位正整数(N>3)&#xff0c;它的每个位上的数字的N次幂之和等于它本身。例如:153 1353 33。本题要求编写程序&#xff0c;计算所有N位水仙花数。 输入格式: 输入在一行中给出一个正整数N(3<N<7 )。 输出格式: …

C语言:水仙花数(daffodil),求出三位数中所有水仙花数

水仙花数&#xff08;C语言&#xff09; 文章目录 水仙花数&#xff08;C语言&#xff09;前言一、题目二、解题思路代码运行结果 总结***根据水仙花数满足的条件找出需要求的对象&#xff0c;这里是各位上的位数。*** 前言 刘汝佳算法书《算法竞赛入门经典》第二章上机练习第…

C语言输出三位数的水仙花数

从100-999中找出符合条件的水仙花数 文章目录 从100-999中找出符合条件的水仙花数前言一、水仙花数是什么&#xff1f;二、C语言实现输出水仙花数1.解题思路2.实现过程 总结 前言 提示&#xff1a;找出符合条件的水仙花数&#xff0c;我们需要弄明白什么叫水仙花数&#xff0c…

c语言设计程序计算水仙花数,C语言水仙花数算法

打印出所有的“水仙花数”&#xff0c; 所谓“水仙花数”是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个“水仙花数”&#xff0c;因为1531的三次方5的三次方3的三次方。 1.程序分析&#xff1a;利用for循环控制100-999个数&#xff0c;每…

水仙花数的实现(C语言)

问题描述&#xff1a;一个三位数&#xff0c;百位的立方加上十位的立方加个位的立方对于这个数本身。 即&#xff1a;abc a^3b^3c^3; 例如&#xff1a;153 1^35^33^3 求出所有的水仙花数&#xff1a; 这是一个将一个三位数的百位&#xff0c;十位&#xff0c;个位提出来&…

C语言输出所有的水仙花数

输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数&#xff0c;其各位数字立方之和等于该数本身。 例如&#xff0c;153是一个水仙花数&#xff0c;因为15315&#xff0b;3 解题思路&#xff1a;水仙花数的解题思路是把给出的某个三位数的个位、十位、百位分别拆分&#…

C语言实现求水仙花数

水仙花数是指一个数各位数字的立方和等于该数本身。 例如&#xff1a;153 13 53 33 求100–1000内的水仙花数。 代码如下&#xff1a; #include <stdio.h> #include <math.h>int main () {int i,j,k,n;printf("100-1000中的水仙花数字有:\n");for…

【必懂】C语言水仙花数题解

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 前言 本专栏内容将会以轻松、简单的方式完成习题的解答&#xff0c;用…

C语言 水仙花数两种算法

两种方法&#xff1a;普通解法和巧妙解法 题目&#xff1a;打印出所有的“水仙花数”&#xff0c;所谓“水仙花数”是指一个三位数&#xff0c;其各位数字立方和等于该数本身。 例如&#xff1a;153是一个“水仙花数”&#xff0c;因为1531的三次方&#xff0b;5的三次方&#…

C语言编写水仙花数

C语言输出100~1000之间的水仙花数 水仙花数是什么&#xff1a; 水仙花数是指一个 3 位数&#xff0c;它的每个位上的数字的 3次幂之和等于它本身&#xff08;例如&#xff1a;1^3 5^3 3^3 153&#xff09;。 代码如下&#xff1a; #include<stdio.h> void main() { …

C语言求“水仙花”数(详细)

问题分析 “水仙花数”是指一个三位数&#xff0c;其每位数字的立方和等于该数本身。例如&#xff1a;153是一个“水仙花数”&#xff0c;因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方。 基于此&#xff0c;利用for循环控制100-999个数&#xff0c;每个数分…

C语言之水仙花数

题目要求&#xff1a; 水仙花数是指一个N位正整数(N>3)&#xff0c;它的每一位上的数字的N次幂之和等于它本身。例如&#xff1a;153 135333。本题要求编写程序&#xff0c;计算所有N位水仙花数。 输入格式&#xff1a; 输入在一行中给出一个正整数N(3<N<7)。 输出格…

C语言计算水仙花数的两种方法

水仙花数指的是一个n位数&#xff08;n>3&#xff09;,他的每一个位上的数字的n次幂之和等于他的本身&#xff0c;求出所有的三位数的水仙花数。 方法一&#xff1a; 先遍历100~999然后拆出每一个数的个位、十位、百位&#xff0c;最后求三次幂之和是否为此数 #include<…

大数据中台

数据中台的由来 数据中台最早是阿里提出的&#xff0c;但真正火起来是2018 年&#xff0c;我们能感受到行业文章谈论数据中台的越来越多。大量的互联网、非互联网公司都开始建设数据中台。为什么很多公司开始建设数据中台&#xff1f;尽管数据中台的文章很多&#xff0c;但是一…