一文彻底搞懂CNN - 手写数字识别(LeNet-5)

2024-08-26 14:36

本文主要是介绍一文彻底搞懂CNN - 手写数字识别(LeNet-5),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LeNet-5是Yann LeCun在1998年设计的用于手写数字识别的卷积神经网络,是深度学习领域中的早期重要里程碑之一。它是第一个成功应用于手写数字识别的卷积神经网络,标志着深度学习在计算机视觉领域的初步应用。

MNIST数据集

LeNet-5以其简洁而有效的结构,成为了早期卷积神经网络中最具代表性之一。它成功奠定了卷积神经网络在计算机视觉领域的地位。

LeNet-5

一、CNN奠基论文

在深度学习领域,卷积神经网络(CNN)的奠基之作非Yann LeCun与Yoshua Bengio(花书《深度学习》作者之一)等人所著的《Gradient-Based Learning Applied to Document Recognition》莫属。

人工智能三巨头

该论文深入解析了LeNet网络架构,其在手写体识别上的突破性成就,为CNN的后续发展奠定了坚不可摧的基石。

LeNet-5

首先,论文介绍了传统模式识别方法在处理复杂图像数据时面临的挑战,特别是手工设计特征提取器的局限性。

  • 传统方法局限性:传统模式识别方法依赖于手工设计的特征提取器,这些方法在处理复杂图像数据时存在局限性,如无法有效应对图像中的平移、形变和扭曲等变化。

  • 全连接网络的不足:全连接网络虽然可以作为分类器,但在处理图像数据时存在两个问题:一是参数过多,导致训练困难;二是忽略了输入数据的拓扑结构(如图像的空间相关性)。

传统模式识别方法

随后,作者提出了使用多层神经网络(特别是卷积神经网络)来解决这些问题,因为这些网络能够从大量数据中学习复杂的、高维的、非线性的映射。

  • 局部感受野:CNN通过局部感受野机制,每个神经元只连接输入数据的一个局部区域,这有助于提取图像的局部特征。

  • 权值共享:同一特征图中的所有神经元共享相同的权值,这使得网络能够检测图像中不同位置的相同特征,从而实现位移不变性。

  • 下采样(池化):通过池化操作降低特征图的维度,减少计算量,并增强模型对形变的鲁棒性。

CNN识别方法

二、LeNet-5网络结构

**LeNet-5是论文中提出的经典卷积神经网络结构,主要由两个卷积层、两个池化层、两个全连接层和一个输出层组成,用于手写数字识别。**其结构主要包括以下几个部分:

LeNet-5

  1. 输入层:接收归一化大小的字符图像,通常图像中的字符位于中心位置。

  2. 卷积层(C1):

  • 使用多个卷积核(6@28*28)对输入图像进行卷积操作,每个卷积核对应一个特征图。

  • 每个特征图的神经元通过局部感受野连接输入图像的一个局部区域,并共享相同的权值。

  1. 池化层(S2):
  • 对C1层的特征图进行下采样操作(6@14*14),通常采用最大池化或平均池化。

  • 减少特征图的维度,降低计算量,并增强模型的鲁棒性。

  1. 第二个卷积层(C3):
  • 对S2层的输出进行进一步的卷积操作(16@10*10),提取更高级别的特征。

  • C3层的特征图与S2层的特征图之间可能存在复杂的连接模式,具体取决于网络设计。

  1. 第二个池化层(S4):
  • 对C3层的特征图进行下采样操作(16@5*5),进一步减少特征图的维度。
  1. 全连接层(C5):
  • 将S4层的输出展平为一维向量,并连接到全连接层。

  • 全连接层中的每个神经元都与前一层的所有神经元相连。

  1. 输出层:
  • 全连接层的输出连接到输出层,输出分类结果。

  • 对于手写体识别任务,输出层通常包含与类别数相等的神经元,每个神经元对应一个类别的概率。

三、LeNet-5模型训练__

LeNet-5模型训练: 论文深入探讨了利用梯度下降法,特别是结合反向传播算法,来训练LeNet-5网络模型。

该过程通过计算损失函数对网络参数的梯度,随后沿梯度的负方向迭代更新参数,使网络逐步优化,从而精准学习从输入图像到输出类别的复杂映射关系。

模型训练

反向传播(Back Propagation): 反向传播算法利用链式法则,通过从输出层向输入层逐层计算误差梯度,高效求解神经网络参数的偏导数,以实现网络参数的优化和损失函数的最小化。

反向传播

损失函数(Loss Function): 用于衡量模型预测值与真实值之间的差距。损失函数越小,模型的预测性能就越好。

损失函数

梯度下降(Gradient Descent 从一个初始点出发,沿着损失函数的负梯度方向不断更新参数,直到达到一个局部最小值或者全局最小值。

梯度下降

随机梯度下降(SGD): 随机梯度下降在每次迭代中仅随机选择一个样本来计算损失函数的梯度,并根据这个梯度来更新模型的一个或多个参数。

随机梯度下降

批量梯度下降(BGD):与随机梯度下降不同, 在每次迭代中,批量梯度下降使用整个数据集来计算损失函数的梯度,并根据这个梯度来更新模型的所有参数。

批量梯度下降

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

这篇关于一文彻底搞懂CNN - 手写数字识别(LeNet-5)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1108836

相关文章

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

一文全面详解Python变量作用域

《一文全面详解Python变量作用域》变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

一文彻底搞懂Java 中的 SPI 是什么

《一文彻底搞懂Java中的SPI是什么》:本文主要介绍Java中的SPI是什么,本篇文章将通过经典题目、实战解析和面试官视角,帮助你从容应对“SPI”相关问题,赢得技术面试的加分项,需要的朋... 目录一、面试主题概述二、高频面试题汇总三、重点题目详解✅ 面试题1:Java 的 SPI 是什么?如何实现一个

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

一文详解如何在Vue3中封装API请求

《一文详解如何在Vue3中封装API请求》在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时,下面我们来看看如何在Vue3项目中封装API请求,让你在实现功能时更加高效吧... 目录为什么要封装API请求1. vue 3项目结构2. 安装axIOS3. 创建API封装模块4. 封装API请求

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2