LeNet-5:深度学习与卷积神经网络的里程碑

目录

​编辑

引言

LeNet-5的结构与原理

输入层

C1层:卷积层

S2层:池化层

C3层:卷积层

S4层:池化层

C5层:卷积层

F6层:全连接层

输出层

LeNet-5的算法基础

LeNet-5的优点

LeNet-5的现代应用

深度学习的发展历程

感知机与多层感知机

反向传播算法与卷积神经网络

深度学习的重大突破

深度学习的现代应用

深度学习的挑战与未来

结论


引言

在人工智能的发展历程中,LeNet-5不仅是一个技术突破,更是深度学习和卷积神经网络(CNN)发展史上的一个重要里程碑。由Yann LeCun等人在1998年提出,LeNet-5最初被设计用于手写数字识别任务,其成功应用不仅证明了深度学习在图像识别领域的潜力,也为后续的深度学习研究和应用奠定了坚实的基础。本文将详细解析LeNet-5的原理、结构、算法基础,并探讨其在现代深度学习应用中的影响和深度学习的发展历程。

LeNet-5的结构与原理

LeNet-5的网络结构简洁而高效,它包含7层(不包括输入层),由两个卷积层、两个池化层和三个全连接层组成。这种结构在当时是一个创新,因为它能够自动从图像中提取特征,而不需要人工设计特征提取器。

输入层

LeNet-5的输入层接收一个32x32像素的灰度图像,这是网络的起点,图像数据将从这里开始流经整个网络。

import torch
import torch.nn as nn

# 定义输入图像的尺寸
input_image_size = (1, 32, 32)  # 1代表灰度图像的通道数

# 创建一个模拟输入张量,代表一个批次中的多个图像
input_tensor = torch.randn(10, *input_image_size)  # 假设一个批次有10张图像

C1层:卷积层

C1层是LeNet-5的第一个卷积层,它使用6个5x5大小的卷积核,步长为1,不使用零填充,卷积操作后得到6个28x28的特征图。

# 定义C1层的卷积操作
conv1 = nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5, stride=1, padding=0)

# 应用卷积操作到输入张量
feature_maps_c1 = conv1(input_tensor)
print("C1层特征图尺寸:", feature_maps_c1.shape)  # 应该输出: torch.Size([10, 6, 28, 28])

S2层:池化层

S2层是一个2x2的最大池化层,它将C1层的特征图尺寸降低到14x14,这有助于减少计算量,并增加网络的平移不变性。

# 定义S2层的最大池化操作
pool2 = nn.MaxPool2d(kernel_size=2, stride=2)

# 应用池化操作到C1层的特征图
feature_maps_s2 = pool2(feature_maps_c1)
print("S2层特征图尺寸:", feature_maps_s2.shape)  # 应该输出: torch.Size([10, 6, 14, 14])

C3层:卷积层

C3层是LeNet-5的第二个卷积层,它使用16个5x5大小的卷积核,步长为1,不使用零填充,卷积操作后得到16个10x10的特征图。

# 定义C3层的卷积操作
conv3 = nn.Conv2d(in_channels=6, out_channels=16, kernel_size=5, stride=1, padding=0)

# 应用卷积操作到S2层的特征图
feature_maps_c3 = conv3(feature_maps_s2)
print("C3层特征图尺寸:", feature_maps_c3.shape)  # 应该输出: torch.Size([10, 16, 10, 10])

S4层:池化层

S4层是LeNet-5的第二个池化层,它同样使用2x2的最大池化,将C3层的特征图尺寸降低到5x5。

# 定义S4层的最大池化操作
pool4 = nn.MaxPool2d(kernel_size=2, stride=2)

# 应用池化操作到C3层的特征图
feature_maps_s4 = pool4(feature_maps_c3)
print("S4层特征图尺寸:", feature_maps_s4.shape)  # 应该输出: torch.Size([10, 16, 5, 5])

C5层:卷积层

C5层是LeNet-5的第三个卷积层,它使用120个5x5大小的卷积核,步长为1,不使用零填充,卷积操作后得到120个1x1的特征图,这些特征图实际上是高维特征向量。

# 定义C5层的卷积操作
conv5 = nn.Conv2d(in_channels=16, out_channels=120, kernel_size=5, stride=1, padding=0)

# 应用卷积操作到S4层的特征图
feature_maps_c5 = conv5(feature_maps_s4)
print("C5层特征图尺寸:", feature_maps_c5.shape)  # 应该输出: torch.Size([10, 120, 1, 1])

F6层:全连接层

F6层是LeNet-5的第一个全连接层,它将C5层的输出展平后连接到84个神经元,这一步是特征的进一步整合和抽象。

# 定义F6层的全连接操作
fc6 = nn.Linear(in_features=120, out_features=84)

# 展平C5层的特征图并应用全连接操作
output_f6 = fc6(feature_maps_c5.view(-1, 120))  # 展平特征图
print("F6层输出尺寸:", output_f6.shape)  # 应该输出: torch.Size([10, 84])

输出层

输出层是LeNet-5的第二个全连接层,它输出10个神经元,对应于10个类别,使用softmax函数进行多分类。

# 定义输出层的全连接操作
output_layer = nn.Linear(in_features=84, out_features=10)

# 应用全连接操作到F6层的输出
output = output_layer(output_f6)
print("输出层尺寸:", output.shape)  # 应该输出: torch.Size([10, 10])

LeNet-5的算法基础

LeNet-5的训练算法与传统的反向传播算法(Backpropagation, BP)相似,包括前向传播和反向传播两个阶段:

  • 前向传播:输入样本通过每一层的变换,计算实际输出。
  • 反向传播:计算实际输出与理想输出的差值,并通过链式法则反向传播误差,调整权值以最小化误差。
# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(params=[conv1.weight, conv1.bias, pool2, conv3.weight, conv3.bias, pool4, conv5.weight, conv5.bias, fc6.weight, fc6.bias, output_layer.weight, output_layer.bias], lr=0.01)

# 模拟一个训练步骤
for images, labels in dataset:  # 假设dataset是包含图像和标签的数据集
    optimizer.zero_grad()   # 清空梯度
    outputs = output_layer(fc6(conv5(pool4(conv3(pool2(conv1(images)))))))  # 前向传播
    loss = criterion(outputs, labels)  # 计算损失
    loss.backward()  # 反向传播
    optimizer.step()  # 更新权重

LeNet-5的优点

LeNet-5相较于传统神经网络,在图像处理方面具有以下优点:

  • 参数共享:卷积层中的权重共享减少了模型参数,降低了过拟合风险。
  • 平移不变性:由于卷积操作的特性,网络对图像中的平移具有不变性。
  • 特征提取:网络能够自动学习图像特征,无需手动设计特征提取器。

LeNet-5的现代应用

LeNet-5的成功证明了深度学习网络在图像识别方面的潜力,激发了该领域的进一步研究和开发。LeNet的影响延伸到许多实际应用中,包括:

  • 文件处理:用于扫描和分析文档、解析和处理不同类型的信息、从文档中提取数据以及自动化数据输入任务。
  • 手写识别:LeNet在识别手写字符和数字方面的成功仍然是光学字符识别(OCR)系统的基础。
  • 生物认证:LeNet的手写识别功能已应用于签名和指纹分析,使生物识别认证方法成为可能,并增强了安全系统。
  • 实时视频分析:LeNet中的基本概念是实时视频分析的基础,例如对象跟踪、监控系统、面部识别和自动驾驶汽车。
  • 图像分类:LeNet的原理影响着现代图像分类系统,应用包括对图像中的物体进行分类和分类,用于多个领域。

深度学习的发展历程

深度学习的发展可以追溯到上世纪五十年代,从最初的感知机模型到现代的卷积神经网络和循环神经网络。深度学习技术在计算机视觉、自然语言处理、语音识别与合成、推荐系统、无人驾驶汽车、游戏智能、生物医学等领域取得了重大突破。

感知机与多层感知机

深度学习的发展历程可以追溯到上世纪五十年代。当时,心理学家Frank Rosenblatt提出了感知机(Perceptron)模型,这是最早的神经网络模型之一。感知机能够学习并识别简单的模式,如二分类问题。然而,由于其局限性,感知机无法处理复杂的问题,如异或(XOR)运算。

为了克服感知机的局限性,研究者们提出了多层感知机(Multi-Layer Perceptron,MLP)的概念。MLP通过在感知机之间添加隐藏层,提高了模型的复杂度,从而能够处理更复杂的问题。然而,多层感知机在训练过程中容易陷入局部最优解,导致训练效果不佳。

反向传播算法与卷积神经网络

反向传播算法(Backpropagation, BP)的研究突破使得多层神经网络的训练成为可能。这一算法通过计算损失函数关于网络参数的梯度,实现了有效的网络参数更新。Yann LeCun等人在1989年构建了应用于计算机视觉问题的卷积神经网络,即LeNet的最初版本。LeNet包含两个卷积层,2个全连接层,共计6万个学习参数,规模远超TDNN和SIANN,且在结构上与现代的卷积神经网络十分接近。

深度学习的重大突破

2012年,Hinton组在ImageNet图像识别大赛中提出了AlexNet,这一模型引入了深层结构和dropout方法,将错误率从25%以上降低到了15%,颠覆了图像识别领域。AlexNet的成功证明了深度学习在大规模图像识别任务中的潜力,开启了深度学习在计算机视觉领域的新篇章。

深度学习的现代应用

深度学习技术的发展不仅推动了图像识别领域的发展,还在自然语言处理、语音识别、推荐系统等多个领域取得了重大突破。例如,在自然语言处理领域,深度学习模型如Transformer和BERT在语言翻译、文本摘要等任务中取得了前所未有的成果。在语音识别领域,深度学习模型显著提高了语音到文本转换的准确性。在推荐系统领域,深度学习技术能够更好地理解用户偏好,提供个性化推荐。

深度学习的挑战与未来

尽管深度学习技术取得了显著的成果,但仍面临着诸多挑战,如模型的可解释性、模型压缩、数据隐私与安全、少样本学习与迁移学习、强化学习与自适应系统等。未来的发展趋势包括模型结构与算法创新、模型与数据融合、自动化机器学习(AutoML)等方向。深度学习框架与工具,如TensorFlow、PyTorch、Keras等,也在不断地发展和完善,以满足不断增长的计算需求。

结论

LeNet-5作为深度学习领域的一个早期模型,为现代卷积神经网络的发展奠定了基础。了解和探究LeNet-5的工作原理和应用场景,有助于我们更好地理解深度学习的原理和发展历程。随着深度学习技术的不断发展,我们期待它在更多领域创造新的可能,为人类社会带来更多的便利和价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936577.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaFX使用jfoenix的UI控件

jfoenix还是一个不错的样式,推荐使用,而且也可以支持scene builder中的拖拖拽拽 需要注意的是过高的javafx版本可能会使得某些样式或控件无法使用 比如alert控件,亲测javaFX 19版本可以正常使用 1.在pom.xml中引入依赖 GitHub地址https://gi…

VMware Workstation Pro 17 下载 以及 安装 Ubuntu 20.04.6 Ubuntu 启用 root 登录

1、个人免费版本 VMware Workstation Pro 17 下载链接怎么找?直接咕咕 VMware 找到如下链接。链接如下:Workstation 和 Fusion 对个人使用完全免费,企业许可转向订阅 - VMware 中文博客 点进去链接之后你会看到如下,注意安装之后仍…

6.2 Postman接口收发包

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 接口收发包的类比1.1 获取对方地址(填写接口URL)1.2 选择快递公司(设置HTTP方法)1.3 填写快递单(设置请求头域&#…

STM32标准库学习之寄存器方法点亮LED灯

STM32C8T6最小系统开发板,点亮PC13引脚的LED灯 1.使能PC13引脚的定时器 PC13引脚为GPIOC组的第13个端口,GPIO的时钟使能定时器为RCC_APB2ENR,这是可以从手册中得出的,如下图所示 从下图可以得出,若要使能GPIOC端口&a…

【Azure 架构师学习笔记】- Azure Function (1) --环境搭建和背景介绍

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Function 】系列。 前言 随着无服务计算的兴起和大数据环境中的数据集成需求, 需要使用某些轻量级的服务,来实现一些简单操作。因此Azure Function就成了微软云上的一个必不可少的组成部分。 …

深度学习:基于MindSpore的极简风大模型微调

什么是PEFT?What is PEFT? PEFT(Parameter Efficient Fine-Tuning)是一系列让大规模预训练模型高效适应于新任务或新数据集的技术。 PEFT在保持大部分模型权重冻结,只修改或添加一小部份参数。这种方法极大得减少了计算量和存储开销&#x…

【蓝桥杯每日一题】推导部分和——带权并查集

推导部分和 2024-12-11 蓝桥杯每日一题 推导部分和 带权并查集 题目大意 对于一个长度为 ( N ) 的整数数列 ( A 1 , A 2 , ⋯ , A N A_1, A_2, \cdots, A_N A1​,A2​,⋯,AN​ ),小蓝想知道下标 ( l ) 到 ( r ) 的部分和 ∑ i l r A i A l A l 1 ⋯ A r \su…

bug:uniapp运行到微信开发者工具 白屏 页面空白

1、没有报错信息 2、预览和真机调试都能正常显示,说明代码没错 3、微信开发者工具版本已经是win7能装的最高版本了,1.05版 链接 不打算回滚旧版本 4、解决:最后改调试基础库为2.25.4解决了,使用更高版本的都会报错,所…

嵌入式入门Day30

IO Day5 线程相关函数pthread_createpthread_selfpthread_exitpthread_join\pthread_detachpthread_cancelpthread_setcancelstatepthread_setcanceltype 作业 线程 线程是轻量化的进程,一个进程内可以有多个线程,至少包含一个线程(主线程&a…

Maven学习(Maven项目模块化。模块间“继承“机制。父(工程),子项目(模块)间聚合)

目录 一、Maven项目模块化? (1)基本介绍。 (2)汽车模块化生产再聚合组装。 (3)Maven项目模块化图解。 1、maven_parent。 2、maven_pojo。 3、maven_dao。 4、maven_service。 5、maven_web。 6…

ERC论文阅读(03)--instructERC论文阅读笔记(2024-12-14)

instructERC论文阅读笔记 2024-12-14 论文题目:InstructERC: Reforming Emotion Recognition in Conversation with Multi-task Retrieval-Augmented Large Language Models 说明:以下内容纯属本人看论文及复现代码的记录,如想了解论文细节&…

《Java核心技术I》Swing用户界面组件

Swing和模型-视图-控制器设计模式 用户界面组件各个组成部分,如按钮,复选框,文本框或复杂的树控件,每个组件都有三个特征: 内容,如按钮的状态,文本域中的文本。外观,颜色&#xff0c…

ubuntu20.04+ROS Noetic 安装PX4+Mavros

文章目录 系统环境安装依赖PX4 安装老版本安装测试环境变量添加版本查看 安装MAVROS(二进制安装非源码安装)测试 OGC 地面站安装测试mavros与sitl通信参考 系统环境 ubuntu 20.04 ROS Noetic 如果系统安装了Anaconda等虚拟环境管理器,要退出…

IIS服务器部署C# WebApi程序,客户端PUT,DELETE请求无法执行

这两天在自己Windows10电脑上搭建IIS服务器,把自己写的WebApi代码部署上做个本地服务器,结果客户端的PUT和DELETE请求无法执行,GET、POST这些都正常,研究后发现要删除IIS中的“模块”中的"webdavmodule"才能解决。

基于SpringBoot的嗨玩旅游网站:一站式旅游信息服务平台的设计与实现

摘要 在旅游需求日益增长的今天,一个全面、便捷的旅游信息服务平台显得尤为重要。嗨玩旅游网站正是为了满足这一需求而设计的在线平台,它提供了包括景点信息、旅游线路、商品信息、社区信息和活动推广等在内的丰富旅游目的地信息,旨在帮助用…

HDR视频技术之七:逆色调映射

HDR 技术近年来发展迅猛,在未来将会成为图像与视频领域的主流。当前 HDR 内容非常短缺,限制了 HDR 视听节目的广泛应用。逆色调映射(Inverse Tone Mapping)应运而生,它是一种用来将 SDR 源信号转换为 HDR 源信号的技术,可以应用于…

EXCEL的各种图形,统计图形

目录 0 EXCEL的各种图形,统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图,一般是只选中1列数据(1个数组) 1.3 如何修改频度图的宽度 1.4 hist图的一个特…

AI 智能名片 S2B2C 商城小程序在社群团购运营中的作用与价值

摘要:本文深入探讨了 AI 智能名片 S2B2C 商城小程序在社群团购运营中的重要作用。随着社群团购的兴起,如何有效运营成为关键问题。AI 智能名片 S2B2C 商城小程序凭借其独特功能,能够在促进消费者互动、提升产品传播效果、影响购买决策以及实现…

【0x000A】HCI_Reject_Connection_Request命令详解

目录 一、命令概述 二、命令格式及参数说明 2.1. HCI_Reject_Connection_Request命令格式 2.2. 参数说明 2.2.1. BD_ADDR(蓝牙设备地址) 2.2.2. Reason(拒绝原因) 三、返回事件及参数说明 3.1. 返回参数 3.2. 生成的事件…

Ant Design of Vue之带select控件,单元格编辑功能的表格EditableCell组件

效果图 功能 表格里面某一行或者某一个单元格支持select复选框可以编辑,新增一行数据,删除一行数据,并且有校验规则 源码 editablecell组件源码 参考自 源码