当前位置: 首页 > news >正文

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的工作原理和应用场景,有助于我们更好地理解深度学习的原理和发展历程。随着深度学习技术的不断发展,我们期待它在更多领域创造新的可能,为人类社会带来更多的便利和价值。

相关文章:

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

目录 ​编辑 引言 LeNet-5的结构与原理 输入层 C1层:卷积层 S2层:池化层 C3层:卷积层 S4层:池化层 C5层:卷积层 F6层:全连接层 输出层 LeNet-5的算法基础 LeNet-5的优点 LeNet-5的现代应用 …...

从资产流动分析WIF市场潜力X.game深究其他未知因素

近日,两则关于WIF最新消息引起了投资者们的注意。据报道,11月28日Vintermute在过去13小时内累计从Binance交易所提取了价值533万美元的WIF,此举不仅彰显了其强大的资金实力,更在某种程度上推动了WIF币价的反弹;另一方面…...

深入解析Vue3响应式系统:从Proxy实现到依赖收集的核心原理

深入解析Vue3响应式系统:从Proxy实现到依赖收集的核心原理 响应式系统的基本原理 作为一个热门的JavaScript框架,Vue在3.x版本中引入了基于Proxy的响应式系统。这个系统的核心思想是利用Proxy对象拦截对数据的访问和修改,从而实现数据的自动更…...

FPGA实现GTP光口数据回环传输,基于Aurora 8b/10b编解码架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案 3、工程详细设计方案工程设计原理框图用户数据发送模块基于GTP高速接口的数据回环传输架构GTP IP 简介GTP 基本结构GTP 发送和接收…...

Linux网络 UDP socket

背景知识 我们知道, IP 地址用来标识互联网中唯一的一台主机, port 用来标识该主机上唯一的一个网络进程,IPPort 就能表示互联网中唯一的一个进程。所以通信的时候,本质是两个互联网进程代表人来进行通信,{srcIp&…...

如何持续优化呼叫中心大模型呼入机器人的性能?

如何持续优化呼叫中心大模型呼入机器人的性能? 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 持续优化呼叫中心大模型呼入机器人的性能是一个复杂而细致的过程,它涉及到数据、模型结构…...

鸿蒙项目云捐助第四讲鸿蒙App应用的登陆注册页实现

根据app的操作流程可以知道,当启动页启动后,点击启动页中的页面就进入到了登录页。本讲就是针对于登录注册页的实现,实现的界面参考下图。 这里根据这个素材的参考实现鸿蒙Next云捐助的登录页。 一、鸿蒙Next云捐助登录页的实现 在项目中继…...

Windows本地搭建Redis集群(集群模式)

手打不易,如果转摘,请注明出处! 注明原文:https://blog.csdn.net/q258523454/article/details/144477957 前言 Redis版本:redis 5.0.14.1 Windows版本:Windows10 本文只讲集群模式 1. 安装Redis 1.1 …...

使用FastGPT制做一个AI网站日志分析器

越来越的多网站面临每天上千次的扫描和各类攻击,及时发现攻击IP,并有效的屏蔽不良访问成为网站安全的重要保障,这里我们使用AI来完成对网站日志的日常分析。 我们来使用FastGPT来制做一个AI网站日志析器,下面就开始: …...

探索 Echarts 绘图:数据可视化的奇妙之旅

目录 一、Echarts 初印象 二、搭建 Echarts 绘图环境 三、绘制第一个图表:柱状图的诞生 四、图表的美化与定制:让数据更具吸引力 1. 主题切换:一键变换风格 2. 颜色调整:色彩搭配的艺术 3. 标签与提示框:丰富信…...

网络基础(IP和端口)

网络连接的核心-TCP/IP体系结构(IP和端口) 什么是IP地址 1.IP地址是电子设备(计算机)在互联网上的唯一标识 2.用来在互联网中寻找电脑 IP 地址就像是你家的地址一样,不过它是在网络世界里用来找到一台电脑或者其他网…...

UE4与WEB-UI通信

前端HTML代码 <!DOCTYPE html><html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>test web ui</title><script src"https://cdn.b…...

前缀和与差分算法详解

定义 前缀和是一种数据预处理技术&#xff0c;它指的是从数组的第一个元素开始&#xff0c;到当前元素为止的所有元素的和。这种技术可以快速计算任意区间内元素的和&#xff0c;而不需要每次都从头开始累加。 差分则是前缀和的逆运算&#xff0c;它主要用于处理对数组某个区…...

《深入探究:C++ 在多方面对 C 语言实现的优化》

目录 一、C 在 C 上进行的优化二、C 关键字&#xff08;C 98&#xff09;三、C 的输入输出1. cin 和 cout 的使用2. cin、cout 和 scanf()、printf() 的区别 三、命名空间1. 命名空间的使用2. 嵌套命名空间3. 在多个头文件中使用相同的命名空间 四、函数缺省值1. 缺省值的使用2…...

React 第十六节 useCallback 使用详解注意事项

useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook&#xff0c;返回一个函数的 memoized的值&#xff1b; 2、如果多次传入的依赖项不变&#xff0c;那么多次定义的时候&#xff0c;返回的值是相同的,防止频繁触发更新&#xff1b; 3、多应用在 父组件为函…...

使用C#和OPenCV实现圆形检测

文章目录 霍夫变换使用 OpenCV 和 C# 实现圆形检测 霍夫变换 在计算机视觉中&#xff0c;圆形检测是一个常见且有用的任务&#xff0c;特别是在物体识别、图像分析和图形处理等领域。OpenCV 是一个强大的开源计算机视觉库&#xff0c;它提供了许多工具来实现不同的图像处理功能…...

评估一套呼叫中心大模型呼入机器人的投入回报比?

评估一套呼叫中心大模型呼入机器人的投入回报比&#xff1f; 原作者&#xff1a;开源呼叫中心FreeIPCC&#xff0c;其Github&#xff1a;https://github.com/lihaiya/freeipcc 评估一套呼叫中心大模型呼入机器人的投入回报比&#xff08;ROI&#xff09;&#xff0c;是一个多…...

十八、Label 和 Selector

Label 是键值对,用来标识 Kubernetes 资源(如 Pod、Node、Service 等)的属性。它们并不直接影响资源的行为,但可以帮助用户快速组织、查询和操作这些资源。标签可以用于选择、过滤和分组。 Label: 标签对 k8s 中各种资源进行分类、分组,如Pod和节点进行分组。通过添加kev…...

实现按键按下(低电平)检测到下降沿

按照流程进行编程 步骤1&#xff1a; 初始化函数 包括时基工作参数配置 输入通道配置 更新中断使能 使能捕获、捕获中断及计数器 HAL_TIM_IC_Init(&ic_handle) //时基参数配置 HAL_TIM_IC_ConfigChannel(&ic_handle,&ic_config,TIM_CHANNEL_2) //输…...

解析 SSM 垃圾分类系统,助力生态平衡

前 言 垃圾分类系统&#xff0c;传统的垃圾分类系统模式还处于线下管理阶段&#xff0c;管理效率极低。随着垃圾分类系统信息的不断增多&#xff0c;传统基于线下管理模式已经无法满足当前用户需求&#xff0c;随着信息化时代的到来。通过该系统的设计&#xff0c;管理员可以管…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...