首页 > 其他分享 >深度学习:ResNet残差神经网络

深度学习:ResNet残差神经网络

时间:2024-09-26 21:19:10浏览次数:9  
标签:梯度 ResNet 残差 神经网络 归一化 输入

目录

一、什么是ResNet残差神经网络

二、残差结构

三、18层残差网络

1.最初残差网络变体

2.图片示例

3.表格示例

四、批次归一化(Batch Normalization)

1.工作过程

2.主要作用

五、ResNet残差神经网络解决了传统神经网络什么问题

1.梯度消失和梯度爆炸

梯度消失:

梯度爆炸:

2.退化问题


一、什么是ResNet残差神经网络

  • ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。
  • ResNet网络与传统的神经网络的区别在于其独特的残差结构批次归一化处理,而这也是其最大的两个特点

 

二、残差结构

  • 残差结构(Residual Block)是ResNet(残差网络)的核心组成部分,旨在解决深层神经网络训练中的退化问题。
  • 其主要特点是通过引入跳跃连接(Skip Connection)来实现残差学习,允许网络学习输入和输出之间的残差(即差异),而不是直接学习从输入到输出的映射。

 

  • 让特征矩阵隔层相加,注意F(X)和X形状要相同,
  • F(X)是经过两次卷积层得到的结果,X是原始特征矩阵
  • 所谓相加是特征矩阵相同位置上的数字进行相加。
  • 相加之后的矩阵作为输入,可以有效解决深层网络退化问题,提高网络的深度

 

三、18层残差网络

1.最初残差网络变体

  • ResNet-18:包含18层。
  • ResNet-34:包含34层。
  • ResNet-50:包含50层。
  • ResNet-101:包含101层。
  • ResNet-152:包含152层。
  • 这里的层数是指卷积层全连接层的数量

 

2.图片示例

  • 这里拿18层的残差网络进行举例,图片是网络的构造
  • 从上往下第一个红框里就是一个残差结构残差块
    1. 该结构将输入矩阵加上经过两层卷积层之后的特征图(因为该卷积层使用卷积核宽度为3,步长为1,填充为1,所以特征图与输入矩阵大小一致)的结果作为下一个残差块的输入
  • 第二个红框是两组残差块(每两个残差块为一组)之间要对特征图进行降维操作
    1. ·每组的第一个残差块使用步长为2的卷积层对输入特征图进行降维,之后再正常卷积得到特征图;
    2. 同时跳跃连接的部分也对输入特征图进行降维,最后将两个特征图相加之后作为下一组残差块的输入
    3. 后面的残差块内部以及残差块组之间的的操作与上述一致
    4. 最后进行全局平均池化,得到最终特征图,该模型输出分类是1000,我们自己调用时通常要修改该参数

 

3.表格示例

  • 18层,34层,50层,101层,152层,及其结构
  • FLOPs行是每个网络的计算性能和模型复杂度

 

四、批次归一化(Batch Normalization)

  • 批次归一化(Batch Normalization,简称 BN)是一种用于加速深度神经网络训练的方法。它通过标准化每个批次的输入,使模型在训练过程中更加稳定,减少了梯度消失和过拟合的风险

1.工作过程

  • 对输入图像进行预处理
  • 对每一个特征图进行归一化处理之后再输入下一个卷积层

 

2.主要作用

  1. 减轻内部协变量偏移:通过标准化每一层的输入,使得其均值接近0,方差接近1,从而减少了层间输入的变化,帮助模型更快地收敛。
  2. 提高训练速度:批次归一化能够使得更大的学习率得以使用,从而加速训练。
  3. 缓解梯度消失:通过规范化输入,有助于保持激活值的稳定性,从而在一定程度上减轻了梯度消失现象。
  4. 具有正则化效果:批次归一化可以在某种程度上减少对其他正则化技术(如Dropout)的依赖,因为它引入了一定的噪声。
  5. 提高模型泛化能力:通过使训练过程更加稳定,批次归一化有助于提高模型在未见数据上的表现。

 

五、ResNet残差神经网络解决了传统神经网络什么问题

1.梯度消失和梯度爆炸

梯度消失:

  • 梯度消失是指在反向传播过程中,梯度逐渐减小,导致更新权重时几乎没有变化。
  • 使得模型在训练初期或某些层的训练变得非常缓慢,甚至停滞不前。

梯度爆炸:

  • 梯度爆炸是指在反向传播过程中,梯度逐渐增大,导致权重更新过大,进而使模型无法收敛,甚至出现数值溢出。
  • 导致模型的损失函数发散,使得训练过程不稳定。

ResNet残差神经网络使用批次归一化解决了该问题

 

2.退化问题

  • 该图是两种层次的神经网络在训练集和测试集上多次迭代的错误率曲线
  • 可以看出来多层神经网络的错误率反而要高于少层
  • 说明深层神经网络出现了退化问题,模型可能出现复杂性增加或过拟合问题

ResNet残差神经网络使用残差结构解决了该问题

标签:梯度,ResNet,残差,神经网络,归一化,输入
From: https://blog.csdn.net/weixin_65047977/article/details/142574490

相关文章

  • [深度学习]卷积神经网络CNN
    1图像基础知识importnumpyasnpimportmatplotlib.pyplotasplt#图像数据#img=np.zeros((200,200,3))img=np.full((200,200,3),255)#可视化plt.imshow(img)plt.show()#图像读取img=plt.imread('img.jpg')plt.imshow(img)plt.show()2CNN概述卷积层conv+......
  • 【鸟类识别系统】+计算机毕设项目+卷积神经网络算法+人工智能+深度学习+模型训练+Pyth
    一、介绍鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作......
  • 【动物识别系统】计算机毕设项目案例+Python卷积神经网络算法+模型训练+人工智能+深度
    一、介绍动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现......
  • 《深度学习》—— 神经网络中的调整学习率
    文章目录一、什么是调整学习率?二、使用PyTorch中的库函数进行调整学习率三种常用的方法1.StepLR2.MultiStepLR3.CosineAnnealingLR一、什么是调整学习率?调整学习率(AdjustingLearningRate)是在机器学习,特别是在深度学习中,对优化算法中的一个关键超参数进行动态......
  • 《深度学习》—— 神经网络中常用的激活函数
    文章目录1.Sigmoid激活函数2.Softmax激活函数3.ReLU激活函数4.LeakyReLU激活函数5.ELU激活函数6.Tanh激活函数激活函数(ActivationFunction)是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。它在神经网络中扮演着至关重要的角色,主......
  • 《深度学习》卷积神经网络 使用最优模型、调整学习率 用法解析及案例实现
    目录一、使用最优模型1、什么是最优模型2、如实使用最优模型1)读取参数方法2)调用完整模型方法3)实例完整代码:打印结果:二、调整学习率1、什么是调整学习率2、目的3、调整学习率的方法1)有序调整2)自适应调整参数解析3)自定义调整4、案例使用一、使用最优模型1、......
  • 神经网络之卷积篇:详解为什么使用卷积?(Why convolutions?)
    详解为什么使用卷积?来分析一下卷积在神经网络中如此受用的原因,然后对如何整合这些卷积,如何通过一个标注过的训练集训练卷积神经网络做个简单概括。和只用全连接层相比,卷积层的两个主要优势在于参数共享和稀疏连接,举例说明一下。假设有一张32×32×3维度的图片,假设用了6个大小为......
  • 【深度学习】03-神经网络 3-3 梯度下降的优化方法-动量算法Momentum
    常规的梯度下降算法中,会遇到平缓区域,碰到鞍点,碰到局部最小值(截止当前无解),因此为了解决这个问题,我们需要优化传统的梯度下降算法。动量算法(Momentum)是梯度下降算法的一种优化方法,旨在解决传统梯度下降容易陷入局部最小值或在鞍点附近震荡的问题。动量算法通过引入一个“动......
  • 日新月异 PyTorch - pytorch 基础: 通过卷积神经网络(Convolutional Neural Networks,
    源码https://github.com/webabcd/PytorchDemo作者webabcd日新月异PyTorch-pytorch基础:通过卷积神经网络(ConvolutionalNeuralNetworks,CNN)做图片分类-通过ResNet50做图片分类的学习(对cifar10数据集做训练和测试),保存训练后的模型,加载训练后的模型并评估指定的......
  • 多输入多输出 | Matlab实现SMA-BP黏菌算法优化BP神经网络多输入多输出预测
    多输入多输出|Matlab实现SMA-BP黏菌算法优化BP神经网络多输入多输出预测目录多输入多输出|Matlab实现SMA-BP黏菌算法优化BP神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料预测效果基本介绍多输入多输出|Matlab实现SMA-BP黏菌算法优化BP神经网络多输入......