【机器学习300问】103、简单的经典卷积神经网络结构设计成什么样?以LeNet-5为例说明。

本文主要是介绍【机器学习300问】103、简单的经典卷积神经网络结构设计成什么样?以LeNet-5为例说明。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        一个简单的经典CNN网络结构由:输入层、卷积层、池化层、全连接层和输出层,这五种神经网络层结构组成。它最最经典的实例是LeNet-5,它最早被设计用于手写数字识别任务,包含两个卷积层、两个池化层、几个全连接层,以及最后的输出层。

一、先用文字介绍一下这五层分别在做什么

(1)输入层

        输入通常是经过预处理的图像数据,例如,将图像调整到特定尺寸(如32x32x3)并进行归一化,使得像素值范围在0到1之间,或者被标准化为均值为0,标准差为1的形式。

(2)卷积层

        卷积层是CNN的关键组成部分,又可以拆分成下面4分部分逐一理解:

  • 卷积核(Filter/Kernels):每个卷积层包含多个可学习的滤波器(或称为卷积核),这些滤波器在输入图像上滑动,执行卷积操作(相乘后求和),从而检测图像中的特定特征,如边缘、线条、纹理等。
  • 步长(Stride):滤波器在图像上移动的步长,决定了输出特征图的空间分辨率。
  • 填充(Padding):通常为了保持输出特征图的尺寸或避免边界信息的丢失,会在图像边缘添加零(Zero Padding)。
  • 激活函数:如ReLU(Rectified Linear Unit)用于增加网络的非线性。

(3)池化层

        池化层的负责减少特征图的空间尺寸,降低计算复杂度,同时保持最重要的特征。最常见的池化类型是最大池化(Max Pooling),它在每个池化区域取最大值作为输出。池化同样有步长和大小的参数,比如常用的2x2大小,步长为2。

(4)全连接层

        在一系列卷积和池化层之后,特征图会被展平(Flatten)成一维向量,然后传递给全连接层。全连接层负责将学到的特征映射到分类标签或其他输出形式。全连接层是传统神经网络的一部分,常用于模型的最终分类或回归任务。

(5)输出层

        对于分类任务,输出层通常使用Softmax激活函数,将神经元的输出转换为概率分布,表示每个类别的预测概率。输出层的神经元数量等于分类任务的类别总数。

二、再用可视化加深对经典CNN结构的理解

(1)经典CNN结构 

LeNet-5网络结构图(英文)

        CNN有个特点,5个层组成(输入层、卷积层、池化层、全连接层和输出层),在神经网络的隐藏层部分,卷积层和池化层交替出现,最后跟上几个全连接层再跟输出层。

        重复的卷积层与池化层的组合目的是为了学习更深层次、更复杂的特征,每次这样的组合都会使网络能够捕捉到更高层次的抽象特征,如从边缘逐步过渡到形状、纹理乃至对象的部分和整体。

LeNet-5网络结构图(中文)

(2)这样的网络结构设计会出现一种现象

        经过这样的网络结构后,图像的尺寸(n_H,n_W)会减小,图像的通道数n_C会增大。 这种变化反映了网络从原始像素数据中提取并逐步构建更高级、更抽象特征的过程。对此现象稍作解释:

① 图像尺寸减小

  • 卷积层:卷积层本身不一定会减少图像尺寸,但可以通过设置合适的填充(padding)和步长(stride)来控制输出尺寸。无填充且步长大于1的卷积会缩小输出尺寸。
  • 池化层:池化层的主要作用之一就是减少空间维度(高度和宽度),通常在每个维度上减半,从而显著减小图像尺寸,同时保持最重要的特征。

② 通道数增大

  • 卷积层:每个卷积层通过不同的卷积核学习不同的特征,每个卷积核会产生一个新的通道。因此,卷积层后的通道数通常会增加,具体增加的数量等于该层中滤波器(卷积核)的数量。
  • 池化层:池化操作不会改变通道数,它只影响空间维度。
  • 全连接层:进入全连接层之前,所有之前的层(包括卷积层和池化层)的输出会被“展平”成一维向量,此时不再讨论“通道”这个概念,而是关注于神经元的总数。

这篇关于【机器学习300问】103、简单的经典卷积神经网络结构设计成什么样?以LeNet-5为例说明。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

MySQL之复合查询使用及说明

《MySQL之复合查询使用及说明》文章讲解了SQL复合查询中emp、dept、salgrade三张表的使用,涵盖多表连接、自连接、子查询(单行/多行/多列)及合并查询(UNION/UNIONALL)等... 目录复合查询基本查询回顾多表查询笛卡尔积自连接子查询单行子查询多行子查询多列子查询在from子句中使

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程