Lenet5卷积神经网络结构

一、介绍

LeNet5是由Yann LeCun在1998年提出的,是深度学习领域中非常重要的神经网络模型。LeNet5是一个卷积神经网络模型,在当时在手写数字识别、人脸识别等领域都有应用。该模型的成功启发了更加复杂的卷积神经网络的设计,是卷积神经网络发展史上的重要一步。

二、LeNet5网络结构

LeNet5是由7层神经网络组成,分别是输入层、C1层、S2层、C3层、S4层、F5层和输出层。下面是LeNet5的网络结构图:

输入层是一张32*32的图片。接下来的C1层是一个卷积层,包含6个卷积核。在C1层中,6个卷积核会对输入图像执行卷积运算,每个卷积核生成一个卷积特征图。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()
self.conv1 = nn.Conv2d(1, 6, 5) # C1 layer
self.pool1 = nn.MaxPool2d(2, 2) # S2 layer
self.conv2 = nn.Conv2d(6, 16, 5) # C3 layer
self.pool2 = nn.MaxPool2d((2,2), (2,2)) # S4 layer
self.fc1 = nn.Linear(16*5*5, 120) # F5 layer
self.fc2 = nn.Linear(120, 84) # F6 layer
self.fc3 = nn.Linear(84, 10) # Output layer

def forward(self, x):
x = F.relu(self.conv1(x))
x = self.pool1(x)
x = F.relu(self.conv2(x))
x = self.pool2(x)
x = x.view(-1, 16*5*5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
output = self.fc3(x)
return output

net = LeNet5()
“`

三、各层功能详解

1. 卷积核层(C1)

输入图片经过C1层后,会得到6个卷积特征图,大小为28*28,每个特征图的大小是后面第二个池化层S2的大小。C1层使用的卷积核大小是5*5,步长为1,padding为0,输入通道为1,输出通道为6,这意味着C1层使用了6个5*5*1的卷积核,每个卷积核都会对输入图片做一次卷积运算,将得到的结果映射到对应的卷积特征图中。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()
self.conv1 = nn.Conv2d(1, 6, 5) # C1 layer

“`

2. 平均池化层(S2)

在经过C1层后,接下来是平均池化层S2。该层的主要作用是降低相邻像素间的相关性,减少参数数量,把大尺寸的特征图缩小为小尺寸的特征图。S2层的大小为14*14,每个特征图的大小为14*14。S2层使用的池化窗口大小为2*2,步长也为2*2。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.pool1 = nn.MaxPool2d(2, 2) # S2 layer

“`

3. 卷积核层(C3)

C3层对S2层的特征图再次进行卷积得到16个卷积特征图,C3层使用的卷积核大小是5*5,步长为1,padding为0,输入通道为S2层的输出6,输出通道为16。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.conv2 = nn.Conv2d(6, 16, 5) # C3 layer

“`

4. 平均池化层(S4)

在经过C3层后,接下来是平均池化层S4。S4层的大小为5*5,每个特征图的大小为5*5。S4层使用的池化窗口大小为2*2,步长也为2*2。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.pool2 = nn.MaxPool2d((2,2), (2,2)) # S4 layer

“`

5. 全连接层(F5)

在S4层后面接着一个全连接层F5,对所有的神经元都进行连接,连接方式类似于经典的神经网络。F5层有120个神经元,接收来自S4层的16个5*5的卷积特征图。F5层的输入是一维的,所以需要把输入的16个特征图展开成一维的向量。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.fc1 = nn.Linear(16*5*5, 120) # F5 layer

“`

6. 全连接层(F6)

F6层有84个神经元,接收来自F5层的120个神经元信号。该层主要作用在于增强网络的非线性,提高网络的拟合能力。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.fc2 = nn.Linear(120, 84) # F6 layer

“`

7. 输出层

输出层一般是一个全连接层,每个神经元代表一个类别。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.fc3 = nn.Linear(84, 10) # Output layer

“`

四、LeNet5的应用

LeNet5由于其简洁的网络结构和很好的性能,被广泛应用在手写数字识别等领域。随着深度学习的发展,卷积神经网络在图像识别、目标检测、语音识别等领域都有很好的应用。可以看到在LeNet5的基础上,会有更加复杂,更加深层次的卷积神经网络。

五、总结

LeNet5是在深度学习领域中具有重要意义的卷积神经网络,其在手写数字识别等领域都有很好的应用。该网络模型结构简洁明了,可以通过加深层数、增加节点等方式对其进行扩展,可以适用于更加复杂的图像识别任务。

原创文章,作者:ZLES,如若转载,请注明出处:https://www.506064.com/n/131755.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZLESZLES
上一篇 2024-10-03 23:47
下一篇 2024-10-03 23:47

相关推荐

  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Python程序的三种基本控制结构

    控制结构是编程语言中非常重要的一部分,它们指导着程序如何在不同的情况下执行相应的指令。Python作为一种高级编程语言,也拥有三种基本的控制结构:顺序结构、选择结构和循环结构。 一…

    编程 2025-04-29
  • 神经网络BP算法原理

    本文将从多个方面对神经网络BP算法原理进行详细阐述,并给出完整的代码示例。 一、BP算法简介 BP算法是一种常用的神经网络训练算法,其全称为反向传播算法。BP算法的基本思想是通过正…

    编程 2025-04-29
  • Python实现BP神经网络预测模型

    BP神经网络在许多领域都有着广泛的应用,如数据挖掘、预测分析等等。而Python的科学计算库和机器学习库也提供了很多的方法来实现BP神经网络的构建和使用,本篇文章将详细介绍在Pyt…

    编程 2025-04-28
  • Lidar避障与AI结构光避障哪个更好?

    简单回答:Lidar避障适用于需要高精度避障的场景,而AI结构光避障更适用于需要快速响应的场景。 一、Lidar避障 Lidar,即激光雷达,通过激光束扫描环境获取点云数据,从而实…

    编程 2025-04-27
  • 遗传算法优化神经网络ppt

    本文将从多个方面对遗传算法优化神经网络ppt进行详细阐述,并给出对应的代码示例。 一、遗传算法介绍 遗传算法(Genetic Algorithm,GA)是一种基于遗传规律进行优化搜…

    编程 2025-04-27
  • ABCNet_v2——优秀的神经网络模型

    ABCNet_v2是一个出色的神经网络模型,它可以高效地完成许多复杂的任务,包括图像识别、语言处理和机器翻译等。它的性能比许多常规模型更加优越,已经被广泛地应用于各种领域。 一、结…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Switch C:多选结构的利器

    在编写程序时,我们经常需要根据某些条件执行不同的代码,这时就需要使用选择结构。在C语言中,有if语句、switch语句等多种选择结构可供使用。其中,switch语句是一种非常强大的…

    编程 2025-04-25
  • 深入理解ANN人工神经网络

    一、什么是ANN人工神经网络 ANN人工神经网络(Artificial Neural Network)是一种模拟人类神经网络行为和功能的数学模型。它是一个由多个神经元相互连接组成的…

    编程 2025-04-25

发表回复

登录后才能评论