深度学习:5种经典神经网络模型介绍

目录

1. LeNet:CNN的鼻祖

2. AlexNet:深度学习的开山之作

3. VGGNet:深度与简洁的结合

4. GoogLeNet:Inception模块的创新

5. ResNet:残差学习的革命


卷积神经网络(CNN)已经发展为图像识别、视频分析和自然语言处理等领域的核心工具

本文将介绍五种在深度学习领域常见的CNN模型,分别是LeNetAlexNetVGGNetGoogLeNetResNet

1. LeNet:CNN的鼻祖

LeNet网络 是最早的卷积神经网络之一,由Yann LeCun等人于1998年提出。它主要用于手写数字识别任务,是深度学习和CNN历史上的一个重要里程碑。

该模型的提出主要应用于手写数字的识别任务

其网络结构如下:

  • 输入层:接收原始图像数据。

  • 卷积层:使用多个卷积核(或滤波器)来提取图像的局部特征。LeNet通常包含两个卷积层。

  • 池化层:在卷积层之后,使用池化操作来降低特征图的空间维度,同时保留重要的特征信息。

  • 全连接层:卷积层和池化层提取的特征被展平并传递到一个或多个全连接层,这些层负责进行更高层次的特征整合。

  • 输出层:最后一个全连接层的输出被传递到一个分类层,通常是一个softmax层,用于生成最终的类别概率。

 

LeNet 的典型结构如下:卷积层1+池化层1+卷积层2+池化层2+全连接层1+全连接层2+输出层

  1. 卷积层1:使用6个5x5的卷积核,步长为1,输出6个特征图。

  2. 池化层1:使用2x2的池化窗口,步长为2。

  3. 卷积层2:使用16个5x5的卷积核,步长为1,输出16个特征图。

  4. 池化层2:使用2x2的池化窗口,步长为2。

  5. 全连接层1:将特征图展平并连接到120个神经元。

  6. 全连接层2:将120个神经元的输出连接到84个神经元。

  7. 输出层:将84个神经元的输出连接到10个神经元,对应于数字0到9的分类。

LeNet 的结构虽然简单,但却奠定了后续CNN发展的基础。

2. AlexNet:深度学习的开山之作

2012年,Alex Krizhevsky等人提出的AlexNet在ImageNet竞赛中取得了突破性的成绩,推动了深度学习的发展。AlexNet是一个具有8层的深度网络,使用ReLU激活函数局部响应归一化(Local Response Normalization, LRN)技术,引入了多GPU训练的概念。

AlexNet架构的特点如下:

  1. 深度结构:AlexNet是一个具有8层的深度网络,其中5层是卷积层,2层是全连接层,还有3层是池化层。

  2. ReLU激活函数:在卷积层和全连接层之后使用ReLU(Rectified Linear Unit)作为激活函数,这有助于解决梯度消失问题,加速训练过程。

  3. 局部响应归一化:在池化层之后使用LRN,有助于提高模型的泛化能力。

  4. 数据增强:通过随机裁剪和水平翻转等技术对训练图像进行数据增强,以减少过拟合。

  5. Dropout:在训练过程中使用Dropout技术,随机丢弃一些神经元的输出,以防止模型对训练数据过度拟合。

  6. 多GPU训练:AlexNet是第一个使用多个GPU进行训练的CNN模型,这大大提高了训练效率。

AlexNet的具体结构如下:卷积层1+池化层1+卷积层2+池化层2+卷积层3+卷积层4+卷积层5+池化层3+全连接层1+全连接层2+输出层

  • 卷积层1:96个滤波器,11x11大小,步长4,后跟ReLU激活函数。

  • 池化层1:3x3大小,步长2。

  • 局部响应归一化1

  • 卷积层2:256个滤波器,5x5大小,步长1,后跟ReLU激活函数。

  • 池化层2:3x3大小,步长2。

  • 局部响应归一化2

  • 卷积层3:384个滤波器,3x3大小,步长1,后跟ReLU激活函数。

  • 卷积层4:384个滤波器,3x3大小,步长1,后跟ReLU激活函数。

  • 卷积层5:256个滤波器,3x3大小,步长1,后跟ReLU激活函数。

  • 池化层3:3x3大小。

  • 全连接层1:4096个神经元,后跟ReLU激活函数和Dropout。

  • 全连接层2:4096个神经元,后跟ReLU激活函数和Dropout。

  • 输出层:1000个神经元,使用softmax激活函数进行分类。

值得一提的是,alexNet 是端到端神经网络模型的开山之作

3. VGGNet:深度与简洁的结合

牛津大学的视觉几何组于2014年提出的VGGNet,以其深层结构3x3小卷积核而闻名。VGGNet展示了通过增加网络深度和使用小卷积核可以有效地提高模型性能。在ImageNet竞赛中取得了优异的成绩,并且因其简洁的设计和强大的性能而广受欢迎。

VGGNet的主要特点包括:

  1. 深层结构:VGGNet采用了更深的网络结构,最初的版本有16层(VGG-16),还有一个更小的版本有13层(VGG-13)。深度是VGGNet能够学习更复杂特征的关键。

  2. 小卷积核:与AlexNet使用的大卷积核不同,VGGNet使用了3x3的小卷积核,并且通过堆叠多个卷积层来捕获更广泛的空间特征。

  3. 连续的卷积层:在每个卷积层之后,VGGNet通常会连续使用更多的卷积层,而不是像AlexNet那样在卷积层和池化层之间交替。

  4. 池化层:VGGNet在连续的卷积层之后使用2x2的池化层,步长为2,以减少特征图的空间尺寸。

  5. 全连接层:在卷积和池化层之后,VGGNet使用几个全连接层,最终输出层使用softmax激活函数进行分类。

  6. 网络初始化:VGGNet采用了一种特定的权重初始化方法,这有助于加速训练过程并提高模型性能。

  7. 数据增强:VGGNet同样使用了数据增强技术,包括随机裁剪和水平翻转,以提高模型的泛化能力。

卷积层1(64个3x3卷积核)+ReLU激活函数+卷积层2(64个3x3卷积核)+ReLU激活函数+2x2池化层1

+卷积层3(128个3x3卷积核)+ReLU激活函数+卷积层4(128个3x3卷积核)+ReLU激活函数+2x2池化层2

+卷积层5(256个3x3卷积核)+ReLU激活函数+卷积层6(256个3x3卷积核)+ReLU激活函数+2x2池化层3

+卷积层7(512个3x3卷积核)+ReLU激活函数+卷积层8(512个3x3卷积核)+ReLU激活函数+2x2池化层4

+卷积层9(512个3x3卷积核)+ReLU激活函数+卷积层10(512个3x3卷积核)+ReLU激活函数+2x2池化层5

+全连接层1(4096个神经元)+全连接层2(4096个神经元)+输出层(1000个神经元)+ softmax激活函数(分类)。

VGG提出了小的卷积核代替大的卷积核的概念,几乎从vgg提出起,3*3连续的小卷积核成为了主流

4. GoogLeNet:Inception模块的创新

GoogLeNet,又称Inception网络,由Google研究人员在2014年提出。它引入了一种新的网络设计思路,即Inception模块,允许网络自动决定在不同尺度上使用哪种类型的卷积或池化操作,提高了模型的效率和性能。

Inception模块的核心思想是在同一层中并行地应用不同尺寸的卷积核,然后将结果在深度方向上合并。这样做的好处是可以捕获不同尺度的特征,而不需要手动设计网络结构来适应不同尺寸的特征。

一个典型的Inception模块包含以下部分:

  • 1x1卷积:用于跨通道降维或升维,有助于减少计算量和控制模型大小。

  • 3x3卷积:首先通过1x1卷积降维,然后应用3x3卷积。

  • 5x5卷积:首先通过1x1卷积降维,然后应用5x5卷积,通常5x5卷积之前会先应用一个3x3的最大池化来减小计算区域。

  • 3x3最大池化:直接在输入上应用3x3的最大池化,然后通过1x1卷积进行升维。

GoogLeNet的整体架构如下:

  • 输入层:接受原始图像数据。

  • 卷积层:一个64个滤波器的卷积层,使用7x7卷积核,步长为2,后跟ReLU激活函数。

  • 池化层:5x5的最大池化,步长为3。

  • Inception模块:多个Inception模块堆叠,每个模块包含不同尺寸的卷积和池化操作。

  • 辅助分类器:在网络中间部分添加辅助分类器,可以帮助网络学习更早的特征,并且提供额外的损失信号,有助于防止过拟合。

  • 全连接层:在多个Inception模块之后,使用全连接层进行特征整合。

  • 输出层:使用softmax激活函数的1000个神经元输出层,用于分类。

GoogLeNet的创新之处在于其Inception模块的设计,这种设计后来也被用于其他网络架构中,如Inception-v2、Inception-v3等。GoogLeNet展示了通过并行化不同尺寸的卷积操作,可以有效地提高网络的性能和效率。

此外,辅助分类器的引入也是GoogLeNet的一个重要特点,它有助于提高模型的泛化能力和训练稳定性。

5. ResNet:残差学习的革命

2015年,微软研究院提出的残差网络(Residual Networks,ResNet)通过引入残差学习框架,解决了深层网络训练中的梯度消失问题。在2015年的ImageNet和COCO竞赛中取得了优异的成绩,并因其解决深层网络训练难题的能力而广受关注。

残差学习:

ResNet的核心创新是残差学习框架,它通过引入跳跃连接(skip connections)或快捷连接(shortcut connections)来解决随着网络深度增加时训练难度增大的问题。这些连接允许网络中的信号绕过一层或多层直接传递,从而帮助梯度在网络中更有效地传播。

残差块

ResNet的基本单元是残差块(residual block),它包含两个卷积层,以及一个跳跃连接,该连接将块的输入直接添加到块的输出。如果输入和输出的维度不匹配,会在跳跃连接上使用1x1卷积来进行维度调整。

一个典型的残差块结构如下:

首先,输入通过卷积层1(通常有批量归一化ReLU激活函数)。然后,通过卷积层2(同样有批量归一化和ReLU激活函数,但在卷积层2之前没有ReLU)。之后,输入通过1x1卷积(如果需要)调整维度,然后与卷积层2的输出相加。最后,通过ReLU激活函数。

ResNet的不同版本

  • ResNet-18:含有18层的残差网络。

  • ResNet-34:含有34层的残差网络。

  • ResNet-50:含有50层的残差网络,是最常见的ResNet版本之一。

  • ResNet-101:含有101层的残差网络。

  • ResNet-152:含有152层的残度网络。

ResNet的架构特点

  • 批量归一化:ResNet在每个卷积层之后使用批量归一化,有助于加速训练过程并提高模型的稳定性。

  • ReLU激活函数:在卷积层之后使用ReLU作为激活函数。残差块:通过残差块结构,ResNet可以有效地训练非常深的网络。

  • 全局平均池化:在残差块之后,ResNet使用全局平均池化来减少全连接层的参数数量。

  • 全连接层和输出层:在全局平均池化之后,使用全连接层进行特征整合,最终输出层使用softmax激活函数进行分类。

ResNet的成功在于它提供了一种有效的方法来训练深层网络,使得网络可以更深而不会遇到梯度消失或梯度爆炸的问题

此外,ResNet的架构也启发了后续许多其他网络架构的发展,如DenseNet、ResNeXt等。

关于网络的具体实现以及完整项目,参考这个专栏即可:

图像分类_听风吹等浪起的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程

一、前言 【试用版软件下载,可以点击本文章最下方官网卡片】 棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程 棋牌计时计费软件的应用也提升了顾客的服务体验,顾客可以清晰的看到自己的消费时间和费用。增加了消费的透明…

梯度下降学习

前言:初步学习梯度下降, 不断根据梯度修改我们的参数,经过多次轮次得到使得我们损失函数最小的时候参数,后续我们可以通过类似的道理,更新我们的参数 假设我们的损失函数是 y x 1 2 x 2 2 y x1^2 x2^2 yx12x22,我…

用Python实现运筹学——Day 14: 线性规划总结与案例复习

一、学习内容 在本节中,我们将复习之前所学的线性规划模型与求解方法,并通过一个综合案例将这些知识应用于求解一个多阶段的生产计划问题。 主要复习内容包括: 线性规划的基础概念:目标函数、约束条件、决策变量。求解方法&…

什么是 HTTP 请求中的 preflight 类型请求

在浏览器的 HTTP 请求中,当我们使用 fetch API 或者 XMLHttpRequest 来进行跨域请求时,浏览器有时会发送一种称为 Preflight 的请求。这种请求是浏览器在实际发送跨域请求前,先与目标服务器进行的一次 “探测” 请求,以确认服务器…

组合式API

1.入口&#xff1a;setup setup中的数据和方法必须return出去&#xff0c;模板才能使用 <script> export default {setup () {console.log(setup);const message this is a messageconst logMessage () > {console.log(message);}return {message,logMessage}},be…

Visual Studio 2017编译libexpat源码过程

一、编译环境 操作系统&#xff1a;Windows 10 企业版 64位 编译工具&#xff1a;Visual Studio 2017 构建工具&#xff1a;CMake3.22 源码版本&#xff1a;libexpat-R_2_4_0 二、CMake生成解决方案 解压libexpat源码&#xff0c;然后启动CMake选择libexpat源码目录&#xff1…

数据结构 ——— 单链表oj题:链表的回文结构

目录 题目要求 手搓简易单链表 代码实现 题目要求 对于一个单链表&#xff0c;设计一个时间复杂度为O(N)&#xff0c;空间复杂度为O(1)的算法&#xff0c;判断其是否为回文结构&#xff0c;给定一个链表的头指针 head&#xff0c;返回一个 bool 值&#xff0c;代表其是否为…

从认识String类,到走进String类的世界

作为一个常用的数据类型&#xff0c;跟随小编一同进入String的学习吧&#xff0c;领略String的一些用法。 1. 认识 String 类 2. 了解 String 类的基本用法 3. 熟练掌握 String 类的常见操作 4. 认识字符串常量池 5. 认识 StringBuffer 和 StringBuilder 一&#xff1a;…

Selenium WebDriver和Chrome对照表

PS&#xff1a;我的没下载WebDriver 也没配置环境变量 也能用Selenium 网上有说把WebDriver放到chrome的安装目录并将路径配到path中【可能之前用playwright下载过】 查看浏览器版本号 在浏览器的地址栏&#xff0c;输入chrome://version/&#xff0c;回车后即可查看到对应版…

文心一言 VS 讯飞星火 VS chatgpt (363)-- 算法导论24.3 5题

五、Newman 教授觉得自己发现了 Dijkstra 算法的一个更简单的证明。他声称 Dikstra 算法对最短路径上面的每条边的松弛次序与该条边在该条最短路径中的次序相同&#xff0c;因此&#xff0c;路径松弛性质适用于从源结点可以到达的所有结点。请构造一个有向图来说明 Dijkstra 算…

SpringBoot基础(四):bean的多种加载方式

SpringBoot基础系列文章 SpringBoot基础(一)&#xff1a;快速入门 SpringBoot基础(二)&#xff1a;配置文件详解 SpringBoot基础(三)&#xff1a;Logback日志 SpringBoot基础(四)&#xff1a;bean的多种加载方式 目录 一、xml配置文件二、注解定义bean1、使用AnnotationCon…

逻辑回归(下): Sigmoid 函数的发展历史

背景 闲来无事翻了一下之前买的一个机器学习课程及之前记录的网络笔记&#xff0c;发现遇到公式都是截图&#xff0c;甚至是在纸上用笔推导的。重新整理一遍之前逻辑回归函数的学习笔记&#xff0c;主要是为了玩一下 LaTex 语法&#xff0c;写公式挺有意思的。 整理之前三篇笔…

鸿蒙harmonyos next flutter通信之MethodChannel获取设备信息

本文将通过MethodChannel获取设备信息&#xff0c;以此来演练MethodChannel用法。 建立channel flutter代码&#xff1a; MethodChannel methodChannel MethodChannel("com.xmg.test"); ohos代码&#xff1a; private channel: MethodChannel | null nullthis.c…

使用JavaScript写一个网页端的四则运算器

目录 style(内联样式表部分) body部分 html script 总的代码 网页演示 style(内联样式表部分) <style>body {font-family: Arial, sans-serif;display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f0f0f0;}.calculator {…

Pikachu-目录遍历

目录遍历&#xff0c;跟不安全文件上传下载有差不多&#xff1b; 访问 jarheads.php 、truman.php 都是通过 get 请求&#xff0c;往title 参数传参&#xff1b; 在后台&#xff0c;可以看到 jarheads.php 、truman.php所在目录&#xff1a; /var/www/html/vul/dir/soup 图片…

golang gin入门

gin是个小而精的web开发框架 官方文档 安装 go get -u github.com/gin-gonic/gin最简单的起手代码 package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON…

openpnp - 图像传送方向要在高级校正之前设置好

文章目录 openpnp - 图像传送方向要在高级校正之前设置好笔记图像传送方向的确定END openpnp - 图像传送方向要在高级校正之前设置好 笔记 图像传送方向和JOG面板的移动控制和实际设备的顶部摄像头/底部摄像头要一致&#xff0c;这样才能和贴板子时的实际操作方向对应起来。 …

大数据新视界 --大数据大厂之 从 Druid 和 Kafka 到 Polars:大数据处理工具的传承与创新

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【Vue】vue-admin-template项目搭建

准备 node环境 node&#xff1a;v16.12.0npm&#xff1a;8.1.0 vue-element-admin下载 官网&#xff1a;https://panjiachen.github.io/vue-element-admin-site/guide/ 我这边下载的是4.4.0版本的&#xff0c;使用其他版本可能会因为所需要的node和npm版本过低或过高导致异常…

【包教包会】2D图片实现3D透视效果(支持3.x、支持原生、可合批)

将去年写的SpriteFlipper从2.x升级到3.x。 如果需要2.x版本或需要了解算法思路&#xff0c;请移步&#xff1a;https://blog.csdn.net/weixin_42714632/article/details/136745051 优化功能&#xff1a;可同时绕X轴和Y轴旋转&#xff0c;两者效果会叠加。 完美适配Web、原生…