PyTorch实战:常用卷积神经网络搭建结构速览

目录

前言

常用卷积神经网络

1.AlexNet

2.VGGNet

3.GoogLeNet

4.ResNet

总览

 


前言

PyTorch可以说是三大主流框架中最适合初学者学习的了,相较于其他主流框架,PyTorch的简单易用性使其成为初学者们的首选。这样我想要强调的一点是,框架可以类比为编程语言,仅为我们实现项目效果的工具,也就是我们造车使用的轮子,我们重点需要的是理解如何使用Torch去实现功能而不要过度在意轮子是要怎么做出来的,那样会牵扯我们太多学习时间。以后就出一系列专门细解深度学习框架的文章,但是那是较后期我们对深度学习的理论知识和实践操作都比较熟悉才好开始学习,现阶段我们最需要的是学会如何使用这些工具。

深度学习的内容不是那么好掌握的,包含大量的数学理论知识以及大量的计算公式原理需要推理。且如果不进行实际操作很难够理解我们写的代码究极在神经网络计算框架中代表什么作用。不过我会尽可能将知识简化,转换为我们比较熟悉的内容,我将尽力让大家了解并熟悉神经网络框架,保证能够理解通畅以及推演顺利的条件之下,尽量不使用过多的数学公式和专业理论知识。以一篇文章快速了解并实现该算法,以效率最高的方式熟练这些知识。


博主专注数据建模四年,参与过大大小小数十来次数学建模,理解各类模型原理以及每种模型的建模流程和各类题目分析方法。此专栏的目的就是为了让零基础快速使用各类数学模型、机器学习和深度学习以及代码,每一篇文章都包含实战项目以及可运行代码。博主紧跟各类数模比赛,每场数模竞赛博主都会将最新的思路和代码写进此专栏以及详细思路和完全代码。希望有需求的小伙伴不要错过笔者精心打造的专栏:

一文速学-数学建模常用模型icon-default.png?t=N7T8https://blog.csdn.net/master_hunter/category_10967944.html


常用卷积神经网络

上篇文章我十分详细讲述了卷积神经网络的特点以及运算和结构搭建。强烈推荐读者多看几遍,以后搭建论文神经网络或者是面试卷积神经网络细节部分都能够有所联想记忆。那么根据上篇文章的学习,我们已经拥有了搭建卷积神经网络的能力,也就是拥有了造车的能力,可以根据数据和图片搭建自己想要的卷积神经网络,但是想要搭建一些已经验证能力的卷积神经网络还是有一定差距的。本篇文章主要带大家再次熟悉一下卷积神经网络的搭建过程,想靠一篇文章来学会卷积神经网络显然是异想天开的,我们需要更多的实践去使用才能掌握。

文章分为两部分,第一部分主要对常用的卷积神经网络简述介绍,第二部分将参考论文详细搭建每个卷积神经网络并且完成数据集的分类。

1.AlexNet

AlexNet是一个经典的卷积神经网络,它在2012年的ImageNet图像分类挑战中取得了第一名。ImageNet是自2010年以来,每年举办一次的全球性图片分类比赛。自从该竞赛举办开始,业界便视其为深度学习标准数据集。后续很多优秀的神经网络模型都是由此比赛诞生。

AlexNet出现后打破了原来众多学者的认知,它首次证明了学习到的特征可以超越手工设计的特征,从而越来越多的人开始重新审视深度学习算法并加入到研究的浪潮中。

有兴趣的可以阅读论文:

《ImageNet Classification with Deep Convolutional Neural Networks》icon-default.png?t=N7T8http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf

AlexNet是一个相对较深的神经网络,相比于以前的网络结构,它引入了更多的卷积层和全连接层。这使得网络可以学习更加复杂、抽象的特征,从而提升了图像分类的性能。

  • ReLU激活函数:在AlexNet中,使用了ReLU(Rectified Linear Unit)作为激活函数,相比于传统的Sigmoid函数,ReLU能够更好地解决梯度消失的问题,加速了网络的收敛速度。
  • 局部响应归一化(LRN)层:引入了LRN层,它在激活函数之前对神经元的输出进行归一化,使得响应相对较大的神经元被抑制,从而提升了网络的泛化能力。
  • Dropout正则化:在全连接层之间引入了Dropout层,这有助于防止过拟合,提升了网络的泛化能力。
  • 大尺寸卷积核和重叠池化:AlexNet使用了较大的卷积核和重叠的池化层,这使得网络能够捕捉到更大范围内的特征,并减小了特征图的大小。
  • 数据增强和多尺度训练: 在训练阶段,AlexNet使用了数据增强技术,包括随机裁剪、水平翻转等,以及在不同尺度下训练多个模型,从而提升了网络的鲁棒性和性能。

AlexNet的网络结构:

  从上图看,在网络设计上其实并非如上图所示,上图包含了GPU通信的部分。这是由当时GPU内存的限制引起的,作者使用两块GPU进行计算,因此分为了上下两部分。但是,以目前GPU的处理能力,单GPU足够了,因此其结构图可以如下所示:

 

2.VGGNet

VGGNet(Visual Geometry Group Network)是由牛津大学视觉几何组(Visual Geometry Group)提出的深度卷积神经网络架构,它在2014年的ImageNet图像分类挑战中取得了优异的成绩。VGGNet之所以著名,一方面是因为其简洁而高效的网络结构,另一方面是因为它通过深度堆叠的方式展示了深度卷积神经网络的强大能力。

VGGNet探索了卷积神经网络的深度与其性能之间的关系,成功地构筑了16~19层深的卷积神经网络,证明了增加网络的深度能够在一定程度上影响网络最终的性能,使错误率大幅下降,同时拓展性又很强,迁移到其它图片数据上的泛化性也非常好。到目前为止,VGG仍然被用来提取图像特征。

  • 网络结构:VGGNet主要由卷积层和全连接层组成,整个网络采用了相对较小(3x3)的卷积核,以及较小的池化窗口(2x2的最大池化),从而保持了网络结构的简洁性。
  • 深度和宽度: VGGNet的主要特点是通过深度和宽度的增加来提升网络性能。它通过不断加深网络结构,使得特征图能够在不同层次上学到越来越抽象的特征。同时,VGGNet采用了相对较大的卷积核,这使得网络具有更大的感受野,能够捕捉到更广阔的上下文信息。
  • 卷积层的堆叠: VGGNet通过多次堆叠相同大小的卷积层和池化层,从而逐步减小特征图的大小,增加通道数,提升网络对图像特征的抽象能力。
  • 全连接层: 在卷积层之后,VGGNet采用了多层的全连接层来实现分类任务。这些全连接层将高维的特征图映射到最终的类别得分。
  • ReLU激活函数: 在每个卷积层和全连接层之后都采用了ReLU作为激活函数,这有助于缓解梯度消失的问题,提升网络的收敛速度。
  • Dropout正则化: VGGNet在全连接层之间引入了Dropout层,以防止过拟合。
  • Batch Normalization: 虽然VGGNet并没有采用Batch Normalization(BN)层,但后续的一些网络结构会在卷积层后面添加BN层来加速训练。

我们来看看VGGNet的网络结构:

VGGNet包含两种结构,分别为16层和19层。VGGNet结构中,所有卷积层的kernel都只有3*3。VGGNet中连续使用3组3*3kernel的原因是它与使用1个7*7kernel产生的效果相同,然而更深的网络结构还会学习到更复杂的非线性关系,从而使得模型的效果更好。该操作带来的另一个好处是参数数量的减少,因为对于一个包含了C个kernel的卷积层来说,原来的参数个数为7*7*C,而新的参数个数为3*(3*3*C)。

 VGG16Net网络结构:

内存消耗主要来自早期的卷积,而参数量的激增则发生在后期的全连接层。

VGGNet的优点:

  1. 简单明了的结构: VGGNet的结构非常简单直观,由连续的卷积层和池化层组成,使得网络结构易于理解。

  2. 便于迁移学习: VGGNet的结构可以很容易地应用于其他任务,也使得它成为了迁移学习的一个良好基础。

  3. 较少的超参数: 相对于GoogLeNet,VGGNet的超参数较少,因此更容易调整和训练。

VGGNet的缺点:

  1. 较大的参数数量: 由于采用了大量的卷积层,导致VGGNet的参数数量较大,训练和推理过程需要更多的计算资源。

  2. 容易出现过拟合: 由于参数量较大,需要更多的数据来避免过拟合问题。

3.GoogLeNet

GoogLeNet,也被称为Inception V1,是谷歌团队在2014年提出的一个深度卷积神经网络架构,它在当年的ImageNet图像分类挑战中取得了领先地位。GoogLeNet的主要特点是采用了一种称为“Inception模块”的网络结构,通过多层次的特征抽取和组合,使得网络可以同时在不同尺度上提取特征,从而获得了非常强大的分类性能。

  • Inception模块: GoogLeNet最大的特点就是采用了Inception模块,这是一种具有多个并行卷积操作的模块。这样的设计可以让网络同时学习到不同尺度和抽象级别的特征,从而提升了网络对图像的理解能力。
  • 多尺度的特征提取: Inception模块通过使用不同大小的卷积核(1x1、3x3、5x5)和最大池化层来处理输入特征图,然后将它们合并在一起。这样可以让网络在不同尺度上获取信息,从而捕获到更丰富的图像特征。
  • 1x1卷积核的作用: 1x1卷积核被称为逐点卷积(pointwise convolution),它可以用来降低通道数或者增加通道数。这使得网络能够在保持计算量相对较小的情况下,增加了网络的复杂性和表达能力。
  • 全局平均池化: GoogLeNet不使用全连接层,而是采用了全局平均池化层,将特征图的每个通道的特征值求平均,然后直接连接到分类器中。这样的设计可以降低网络的参数量,减少过拟合的可能性。
  • 辅助分类器: 除了主分类器外,GoogLeNet在中间层引入了两个辅助分类器。这两个辅助分类器在训练过程中会加入总损失中,有助于减轻梯度消失问题,加速网络的收敛。
  • Inception的多次堆叠: GoogLeNet通过多次堆叠Inception模块,构建了一个深度的网络结构,从而获得了强大的特征抽取能力。
  • Dropout和Batch Normalization: GoogLeNet在全连接层之间采用了Dropout层来防止过拟合,并在卷积层之后使用了Batch Normalization来加速训练。

GoogLeNet最初的想法很简单,就是若想要得到更好的预测效果,就要增加网络的复杂度,即从两个角度出发:网络深度和网络宽度。但是二者都需要付出一定的代价,首先更复杂的网络意味着更多的参数,就算是ILSVRC这种包含了1000类标签的数据也很容易过拟合。

再者是更复杂的网络会带来更大的计算资源的消耗,而且当kernel个数设计不合理时导致kernel中的参数没有被完全利用(多数权重都趋近于0)时,会导致大量计算资源的浪费。

GoogLeNet引入了inception结构来解决这个问题,其中涉及了大量的数学推导和原理,感兴趣的推荐阅读:Going Deeper with Convolutionsicon-default.png?t=N7T8https://arxiv.org/abs/1409.4842这里不作详解,不然都得另开篇文章,内容太多了。除了inception结构,GoogLetNet的另外一个特点是主干网络部分全部使用卷积网络,仅仅在最终分类部分使用全连接层。

GoogLeNet和VGGNet是两种非常成功的深度卷积神经网络架构,它们各自有着不同的优缺点:

GoogLeNet的优点:

  1. 更高的效率: GoogLeNet相比于VGGNet在同等性能下,拥有更少的参数量。这使得它在相同计算资源下,可以处理更大规模的任务。

  2. 更深的网络结构: GoogLeNet通过巧妙的Inception模块设计,使得可以构建非常深的网络,而不容易出现梯度消失或爆炸的问题。

  3. 多尺度特征提取: Inception模块可以同时在不同尺度上提取特征,使得网络能够捕获到丰富的图像信息。

  4. 全局平均池化: 使用全局平均池化代替全连接层,可以大幅减少参数数量,降低过拟合的风险。

GoogLeNet的缺点:

  1. 相对复杂的网络结构: 由于Inception模块的设计相对复杂,导致GoogLeNet的网络结构不太容易理解。

  2. 训练时间较长: 由于网络深度较大,训练GoogLeNet需要相对更长的时间。

  3. 难以可视化和解释: 由于网络结构的复杂性,GoogLeNet的内部工作原理相对难以可视化和解释,使得难以理解网络的决策过程。

GoogLeNet相对于VGGNet在网络结构设计上更加灵活和高效,适用于大规模任务。而VGGNet在结构上更为简单直观,容易理解和调整,适用于中小规模的任务,也便于迁移学习。选择合适的网络取决于任务的具体需求、计算资源和数据规模等因素。

4.ResNet

在ResNet提出之前,所有的神经网络都是通过卷积层和池化层的叠加组成的。
人们认为卷积层和池化层的层数越多,获取到的图片特征信息越全,学习效果也就越好。但是在实际的试验中发现,随着卷积层和池化层的叠加,不但没有出现学习效果越来越好的情况,反而两种问题:

  • 1.梯度消失和梯度爆炸
    • 梯度消失:若每一层的误差梯度小于1,反向传播时,网络越深,梯度越趋近于0
    • 梯度爆炸:若每一层的误差梯度大于1,反向传播时,网络越深,梯度越来越大
  • 2.退化问题
    • 随着层数的增加,预测效果反而越来越差。

因此ResNet网络的主要特点和设计思想:

  • 残差块(Residual Block): ResNet引入了残差块的概念,通过在网络中添加了“跳跃连接”(skip connection),使得网络可以直接学习残差(即原始输入与学习到的特征之间的差异),而不是直接学习原始特征。这样可以更容易地训练非常深的网络。
  • 跳跃连接: 残差块中的跳跃连接允许信息在不同层之间直接传递,而不会受到梯度消失或爆炸的影响。这种设计保证了信息在网络中的流动,使得可以训练非常深的网络。
  • Identity Mapping: 在残差块中,如果输入的特征维度与输出的特征维度相同,那么可以直接将输入特征传递给输出,形成一个恒等映射(identity mapping)。这样可以避免了在高维空间中进行不必要的非线性变换,减少了网络的复杂度。
  • Bottleneck 结构: 为了减少计算量和参数数量,ResNet使用了“瓶颈结构”(bottleneck structure)来代替简单的卷积层,它包括了一个1x1卷积层、一个3x3卷积层和一个1x1卷积层,分别用于降维、卷积、升维,从而减少了计算量。
  • 全局平均池化(Global Average Pooling): 在网络的最后一层使用了全局平均池化,将特征图的每个通道的所有值取平均,得到一个与通道数量相同的特征向量,作为最终的预测。
  • Identity Shortcut 和 Projection Shortcut: ResNet根据输入输出的维度是否一致,分别使用了两种不同的跳跃连接方式,即Identity Shortcut(维度一致)和Projection Shortcut(维度不一致),保证了信息的顺利传递。

ResNet的设计思想在于引入了残差学习,通过跳跃连接解决了深度网络训练过程中的梯度问题。ResNet论文提出通过数据的预处理以及在网络中使用 BN(Batch Normalization)层来解决。为了解决深层网络中的退化问题,可以人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为 残差网络 (ResNets)。ResNet论文提出了 residual结构(残差结构)来减轻退化问题,下图是使用residual结构的卷积网络,可以看到随着网络的不断加深,效果并没有变差,而是变的更好了。

 除了残差结果以外,ResNet还沿用了前人的一些可以提升网络性能的效果和设计,如堆叠式残差结构,每个残差模块又由多个小尺度kernel组成,整个ResNet除最后用于分类的全连接层以外都是全卷积的,这大大提升了计算速度。ResNet网络深度有34、50、101、152等多种,50层以上的ResNet也借鉴了类似GoogLeNet的思想,在细节上使用了bottleneck的设计方式。普通卷积层与残差卷基层:

 ResNet网络结构缩略图:


总览

至此我们已经介绍了4种基础的网络结构和设计网络时涉及的主要思想。在ResNet之后,还有很多新的网络结构不断出现,但主要思想大体上都是基于以上4种类型做的一些改进,入Inception-v4的主要思想便是ResNet+Inception。

我们再来看看不同网络结构可以达到的算法精度以及其内存消耗情况:

如与其他模型相比,VGGNet占用最多的计算量并且消耗最大的内存,GoogLeNet是刚刚介绍的四个模型中计算量和内存消耗最小的模型,然而AlexNet虽然计算量不高,但也会占用较大内存且精度不高,而不同大小的ResNet模型性能差异也较大,具体情况需要根据应用场景选择合适的模型。

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

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

相关文章

RDLC动态设置整个表格是否显示

最近有个新的需求:使用RDLC打印,当数据库中能查出数据时,显示表格。没有数据时,不显示整个表格。 1.首先在RDLC中选中表格的任意一列,右键Tablix属性 2.Tablix属性中选中可见性》选中基于表达式显示或隐藏(E)并点开右…

数据大爆炸:大数据分析如何改变我们的世界

文章目录 大数据分析的基本概念数据的三个V大数据分析的技术 大数据分析在商业中的应用1. 个性化营销2. 风险管理3. 供应链优化4. 客户服务 大数据分析在医疗保健中的应用1. 疾病预测2. 患者治疗3. 医疗设备监控 大数据分析在科学研究中的应用1. 天文学2. 生物学3. 气象学 大数…

消费盲返模式:让消费变为一种乐趣,让业绩飞速增长

消费盲返模式是一种新型的消费返利模式,它可以让消费者在购买商品或服务后,获得后续一定数量的订单的部分利润作为奖励。这样,消费者不仅可以享受商品或服务的优惠,还有可能赚取更多的钱。这种模式对于平台和消费者都有各自的优势…

HDMI之HDCP 2.3

Authentication and Key Exchange Without Stored Km With Stored Km HDCP2Version DDC时序 协议截图 Bit2为1,可知DUT设备支持HDCP 2.2及以上版本 RxStatus DDC时序 协议截图 <

TensorFlow入门(一)

一、下载安装Anaconda 下载地址:http://www.anaconda.comhttp://www.anaconda.com 下载完成后运行exe进行安装 二、下载cuda 下载地址:http://developer.nvidia.com/cuda-downloadshttp://developer.nvidia.com/cuda-downloads 下载完成后运行exe进行安装 安装后winR cmd进…

SpringBoot 集成 AKKA

文章目录 应用场景与 SpringBoot 集成示例 应用场景 AKKA 是一个用于构建高并发、分布式和容错应用程序的开源框架。它基于Actor模型&#xff0c;提供了强大的并发抽象和工具&#xff0c;适用于各种业务场景。以下是一些使用AKKA框架的常见业务场景的示例&#xff1a; 实时数据…

百度SEO优化基本原理(掌握SEO基础,提高网站排名)

随着互联网的迅速发展&#xff0c;越来越多的企业开始意识到网站优化的重要性&#xff0c;其中百度SEO优化是企业不可忽视的一项工作。本文将介绍百度SEO优化的基本概念、步骤、原理、解决方法和提升网站标题优化的方法。蘑菇号-www.mooogu.cn 百度SEO优化是指针对百度搜索引擎…

工业互联网:数字化革命的引擎

工业互联网&#xff0c;作为数字化革命的引擎&#xff0c;正以前所未有的速度和力度改变着我们的世界。这一概念不再局限于企业内部的信息技术应用&#xff0c;而是将互联网、大数据、人工智能等技术深度融入到制造业、能源、交通、农业等各个领域&#xff0c;实现了设备、系统…

Nue JS 造全新的 Web 生态

Nue JS 是最近开源的 Web 前端项目&#xff0c;用于构建用户界面&#xff0c;体积非常小&#xff08;压缩后 2.3kb&#xff09;。Nue JS 支持服务器端渲染 (SSR)、反应式组件和 “同构” 组合 ("isomorphic" combinations)。 Vue.js、React.js 或 Svelte&#xff0c;…

基于ISO13400 (DoIP) 实现车辆刷写

近年来&#xff0c;在整车研发中基于以太网实现车辆高带宽通讯无疑是人们热议的话题。无论是车内基于车载以太网来减少线束成本&#xff0c;实现ADAS、信息娱乐系统等技术&#xff0c;还是基于新的电子电气架构以及远程诊断需求来实现以太网诊断&#xff08;DoIP&#xff09;&a…

AnsibleFATE部署过程

前言 基本上按照官方文档就行了&#xff0c;先做before deploy&#xff0c;再做three side guide.md。 以下是可能出现的问题 这个AnsibleUndefinedVariable: ‘ansible_ssh_host‘ is undefined.是肯定会遇到的&#xff0c;参考我这篇 安全性限制 ansible提示 warning&…

全球第4大操作系统(鸿蒙)的软件后缀.hap

system exe 2022-12-01 04:38:38 首页 > 操作系统 145|0条评论 鸿蒙OS兼容已有安卓程序&#xff1a;这事不稀奇。 其实一个系统兼容另外系统的可执行程序并非新鲜事&#xff0c;比如linux下的wine和crossover可以兼容许多win系统的.exe程序。 作为回应&#xff0c;Wind…

【办公自动化】使用Python一键往Word文档的表格中填写数据(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

odoo16 取消“系统各功能状态日报”的邮件

odoo16默认情况下每周都会发送一个“系统各功能状态日报”的邮件&#xff0c;而且是所有人都发&#xff0c; 这个功能在哪配置呢&#xff1f; 今天研究了一下&#xff0c; 线索是“系统各功能状态日报”&#xff0c;先全文检索吧 #. module: digest #: model:digest.digest,na…

SAP FI FS10N排除特定凭证类型

财务要求 需要把CO类型的凭证去掉&#xff0c;经过调试发现 筛选条件在GT_selection 在这个函数里面做个增强试试 *----------------------------------------------------------------------* ***INCLUDE FAGL_FILL_GT_SELECTIONS . *------------------------------------…

从技术创新到应用实践,百度智能云发起大模型平台应用开发挑战赛!

大模型已经成为未来技术发展方向的重大变革&#xff0c;热度之下更需去虚向实&#xff0c;让技术走进产业场景。在这样的背景下&#xff0c;百度智能云于近期发起了“百度智能云千帆大模型平台应用开发挑战赛”。 挖掘大模型落地应用 千帆大模型平台应用开发挑战赛启动 在不久…

<图像处理> Harris角点检测

Harris角点检测原理 Harris角点检测是一种计算机视觉中常用的角点检测算法&#xff0c;用于在图像中检测出角点特征。角点通常被定义为两条边的交点&#xff0c;或者说&#xff0c;角点的局部邻域应该具有两个不同区域的不同方向的边界。Harris角点检测算法是最常用且最基础的…

利用亚马逊 云服务器 EC2 和S3免费套餐搭建私人网盘

网盘是一种在线存储服务&#xff0c;提供文件存储&#xff0c;访问&#xff0c;备份&#xff0c;贡献等功能&#xff0c;是我们日常中不可或缺的一种服务。很多互联网公司都为个人和企业提供免费的网盘服务。但这些免费服务都有一些限制&#xff0c;比如限制下载速度&#xff0…

Vue3 封装 element-plus 图标选择器

一、实现效果 二、实现步骤 2.1. 全局注册 icon 组件 // main.ts import App from ./App.vue; import { createApp } from vue; import * as ElementPlusIconsVue from element-plus/icons-vueconst app createApp(App);// 全局挂载和注册 element-plus 的所有 icon app.con…

WebGL 选中物体

目录 前言 如何实现选中物体 示例程序&#xff08;PickObject.js&#xff09; 代码详解 gl.readPixels&#xff08;&#xff09;函数规范 示例效果 前言 有些三维应用程序需要允许用户能够交互地操纵三维物体&#xff0c;要这样做首先就得允许用户选中某个物体。对物体…