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

article/2025/7/3 15:43:29

1.什么是LeNet

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

  • 主要用来进行手写字符的识别与分类
  • 确立了CNN的结构,现在神经网络中的许多内容在LeNet的网络结构中都能看到

虽然LeNet网络结构比较简单,但是刚好适合神经网络的入门学习。

2.分析

2.1.LeNet结构

在这里插入图片描述
如图所示,LeNet共分为7层,分别是:

  • C1,卷积层
  • S2,池化层
  • C3,卷积层
  • S4,池化层
  • C5,卷积层
  • F6,全连接层
  • OUTPUT,全连接层

接下来我们将对各层进行详细的分析。

2.2.输入层INPUT

一般来说不将输入层视为网络层次结构之一,上面讲的"7层"也不包括输入层

输入层为尺寸32 × 32的图片。由于MNIST数据集中的图片也是32 × 32的,因此不用进行额外的尺寸调整操作。

2.3.卷积层C1

2.3.1.什么是卷积

卷积的本质就是输入图片卷积核做点积(数量积)。
举一个例子,假设我们有一副5 × 5的输入图片、3 × 3的卷积核分别如下:

# 图片        #卷积核
1 1 1 0 0     1 0 1
0 1 1 1 0     0 1 0
0 0 1 1 1     1 0 1
0 0 1 1 0
0 1 1 0 0

那么卷积的过程就如下面的动画所示:卷积核顺序扫描输入图片,并作点积。
在这里插入图片描述
例如,左上角"4"的计算过程为:

1*1 + 1*0 + 1*1 + 0*0 + 1*1 + 1*0 + 0*1 + 0*0 + 1*1 = 4

在这里插入图片描述
一般来说,通过卷积操作输出的新图像(在这里为一张3 × 3的图像)我们称之为特征图(featuremap)
卷积的意义在于,利用不同的卷积核扫描图像,可以提取图像不同的特征。例如,用以下卷积核便可以提取出水平方向的边缘(思考:为什么?)

-1 -1 -12  2  2
-1 -1 -1
2.3.2.卷积层C1参数分析
  • 输入:32 × 32的图像
  • 卷积核种类: 6
    因此卷积层C1理论上能提取出输入图像6种不同的特征
  • 卷积核大小:5 × 5
  • 输出特征图数量: 6
    每个卷积核分别与输入图像进行卷积运算,共得到6份输出
  • 输出特征图大小:28 × 28
    从上一节举的例子中可以分析出,在没有进行 填充(padding) 的情况下,输出特征图的边长为:
    输入图像 - 卷积核 + 1
    即32 - 5 + 1 = 28
  • 神经元数量:28 × 28 × 6
    在神经网络的学习中,我们可以知道神经元其实就是一个"数"。而卷积层C1是由6张特征图组成的,每张特征图中包含28 × 28个像素,一个像素其实就是一个0 ~ 255之间的数(表示灰度值),对应着一个神经元。因此共有28 × 28 × 6 = 4704个神经元。
  • 可训练参数:(5 × 5 + 1) × 6
    首先,每个卷积核是一个5 × 5的矩阵,矩阵里的每个数都是要通过训练得到的;此外,在实际卷积运算后还要加上一个偏置(bias),因此每个卷积核需要训练5 × 5 + 1个参数,六个卷积核共需要训练(5 × 5 + 1) × 6 = 156个参数。
  • 连接数:28 × 28 × (5 × 5 + 1) × 6
    卷积层的每个特征图的各像素都与其对应的卷积核的各参数间有连接。一共有6个这样的特征图——卷积核对,每个"特征图——卷积核"对包含28 × 28 × (5 × 5 + 1) × 6个连接,因此共有28 × 28 × (5 × 5 + 1) × 6 = 122304个连接。
    需要注意的是,由于权值共享机制的存在,我们只需要训练156个参数。

2.4.池化层S2

2.4.1.什么是池化

在这里,池化(pooling)是进行下采样(downsampling)操作,即对图像进行压缩。
以最大池化为例:
在这里插入图片描述
采用2 × 2滤波器(filter),最大池化的结果如上,即对每个2 × 2的区域取最大值。最小池化、平均池化同理,分别是取相应区域的最小值,平均值。
一般来说,池化:

  • 往往在卷积层后面
  • 可以降低卷积层输出的特征向量,改善过拟合的现象
2.4.2.池化层S2参数分析
  • 输入:28 × 28的特征图(6张)
  • 采样区域: 2 × 2
    在这里,采样方式为4个输入相加,乘以一个可训练参数,再加上一个可训练偏置,并将结果通过sigmoid函数。
  • 输出特征图大小:14 × 14
  • 输出特征图数量:6
  • 神经元数量:14 × 14 × 6
    计算方法同上一节,每张特征图有14 × 14个像素,共6张,因此有14 × 14 × 6 = 1176个神经元。
  • 可训练参数:2 × 6
    对于每张特征图,只有两个参数需要确定:用于相乘的"可训练参数"与"可训练偏置",共6张特征图,因此要训练6 × 2 = 12个参数。
  • 连接数:14 × 14 × 6 × (2 × 2 + 1)
    池化层的每个特征图的各像素都与2×2采样区域以及1个偏置有连接。因此共有14 × 14 × 6 × (2 × 2 + 1) = 5880个连接。

2.5.卷积层C3

  • 输入:14 × 14的特征图(6张)
  • 卷积核种类: 16
    因此卷积层C3能够提取出更多细微的特征
  • 卷积核大小:5 × 5
  • 输出特征图数量: 16
    在卷积层C1中,卷积核有6种,而输入图像只有1张,因此只需要将6个卷积核分别对1张图像进行卷积操作,最后得到6张特征图。那么输入6张图像的话应该怎么处理呢?
    在这里,采用的方法是"每个卷积核对多张特征图"进行处理,例如,编号为0的卷积核处理编号为0、1、2的特征图,编号为15的卷积核处理编号为0、1、2、3、4、5的特征图…具体的对应规则如下:
    在这里插入图片描述
    横轴为编号0 ~ 15的16个卷积核,纵轴为编号为0 ~ 5的6张输入特征图。一种方便的记忆方法是前6个卷积核处理三张连续的特征图(对应第一个红框),之后6个卷积核处理四张连续的特征图(对应第二个红框),之后3个卷积核处理四张两两连续的特征图(对应第三个红框),最后1个卷积核处理全部六张特征图(对应最后一个红框)。
  • 输出特征图大小:10 × 10
    输出特征图的边长为14 - 5 + 1 = 10
  • 可训练参数:1516
    以第一个红框为例。首先,每个卷积核包含5 × 5个可训练的参数;而在这里每个卷积核需要与3张特征图相连,最后还要加上1个偏置,因此需要训练3 × 5 × 5 + 1个参数。第一个红框内有6个这样的卷积核,因此共需要训练6 × (3 × 5 × 5 + 1)个参数。
    同理,对于第二个红框,其共需要训练6 × (4 × 5 × 5 + 1)个参数;对于第三个红框,其共需要训练3 × (4 × 5 × 5 + 1)个参数;对于第四个红框,其共需要训练1 × (6 × 5 × 5 + 1)个参数。
    总计可训练6 × (3 × 5 × 5 + 1) + 6 × (4 × 5 × 5 + 1) + 3 × (4 × 5 × 5 + 1) + 1 × (6 × 5 × 5 + 1) = 1516个参数。
  • 连接数:10 × 10 × 1516
    卷积层的每个特征图的各像素都与其对应的卷积核的各参数间有连接。因此共有10 × 10 × 1516 = 151600个连接。

卷积层C3采用这种卷积核-特征图组合方式的好处有:

  • 减少参数
  • 有利于提取多种组合特征(因为组合方式并不对称)

2.6.池化层S4

  • 输入:10 × 10的特征图(16张)
  • 采样区域: 2 × 2
    在这里,采样方式为4个输入相加,乘以一个可训练参数,再加上一个可训练偏置,并将结果通过sigmoid函数。
  • 输出特征图大小:5 × 5
  • 输出特征图数量:16
  • 神经元数量:5 × 5 × 16
    每张特征图有5 × 5个像素,共16张,因此有5× 5 × 16 = 400个神经元。
  • 可训练参数:2 × 16
    对于每张特征图,只有两个参数需要确定:用于相乘的"可训练参数"与"可训练偏置",共16张特征图,因此要训练16 × 2 = 32个参数。
  • 连接数:5 × 5 × 16 × (2 × 2 + 1)
    池化层的每个特征图的各像素都与2×2采样区域以及1个偏置有连接。因此共有5 × 5 × 16 × (2 × 2 + 1) = 2000个连接。

2.6.卷积层C5

  • 输入:5 × 5的特征图(16张)

  • 卷积核种类: 120

  • 卷积核大小:5 × 5

  • 输出:120维向量

  • 算法:
    每个卷积核与16张特征图做卷积,得到的结果求和,再加上一个偏置,结果通过sigmoid函数输出。
    在这里插入图片描述

  • 可训练参数:(5 x 5 x 16 + 1) x 120
    对于每个卷积核,其要与16张特征图的每个像素以及偏置相连,共120个卷积核,因此要训练的参数为(5 x 5 x 16 + 1) x 120 = 48120。

2.7.全连接层F6

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

F6层有84个结点,本质上对应一张7×12的比特图。实际上,ASCII码就可以用一张7×12的比特图来表示,每个像素若为-1则表示白色,1表示黑色。该全连接层的设计也是利用了这一思想。
在这里插入图片描述

  • 输出:84维向量
  • 可训练参数:84 × (120 + 1)
    对于F6层的每个结点,其值是由输入向量与权重向量做点积得到的,而由于权重向量与输入向量的维度相同,因此权重向量也是120维的,需要训练120个参数,加上偏置,每个结点需要训练121个参数。一共有84个结点,因此需要训练84 × 121 = 10164个参数。

2.8.全连接层OUTPUT

  • 输入:84维向量
    本质上是一张7×12的比特图,表示经过我们多层处理最终得到的一张"数字图像"。
  • 输出:10维向量
    OUTPUT层共有10个结点y0、y1、…、y9,分别对应着数字0到9。

采用径向基函数(RBF)的连接方式,计算方式为:
y i = ∑ j = 0 83 ( x j − w i j ) 2 {y_i} = \sum\limits_{j = 0}^{83} {{{({x_j} - {w_{ij}})}^2}} yi=j=083(xjwij)2
其中, w i j w_{ij} wij的值由数字i的比特图编码(即上一节展示的ASCII码比特图编码)确定。如果结点yi的计算结果最小,则数字识别的结果为数字i。
本质上是比较"我们处理得到的数字比特图"与"真实比特图"之间的相似度。

3.总结

在这里插入图片描述
本文撰写时间有限,如有不足,欢迎指正!


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

相关文章

卷积神经网络(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;但是一…

浅谈大型互联网企业入侵检测及防护策略

前言 如何知道自己所在的企业是否被入侵了&#xff1f;是没人来“黑”&#xff0c;还是因自身感知能力不足&#xff0c;暂时还无法发现&#xff1f;其实&#xff0c;入侵检测是每一个大型互联网企业都要面对的严峻挑战。价值越高的公司&#xff0c;面临入侵的威胁也越大&#…