人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

这篇具有很好参考价值的文章主要介绍了人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ResNet

人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

  • 亮点:网络结构特别深
    人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
    (突变点是因为学习率除0.1?)
    梯度消失:假设每一层的误差梯度是一个小于1的数,则在反向传播过程中,每向前传播一层,都要乘以一个小于1的误差梯度。当网络越来越深的时候,相乘的这些小于1的系数越多,就越趋近于0,这样梯度就会越来越小。
    梯度爆炸:反之,如果梯度是一个大于1的数,则在反向传播过程中,每经过一层都要乘一个大于1的数,随着层数不断加深,梯度会越来越大。
    解决方法:对数据进行标准化处理,权重初始化,BN(Batch Normalization)处理。

但是在解决梯度消失、梯度爆炸之后仍然存在退化问题:层数深的网络效果仍然没有层数少的网络效果好。
解决退化问题:残差结构。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
(???
有突变应该是前期冻结了网络主干进行训练
突变是迭代到一定次数,学习率会改变,一般是乘以0.1

  • 残差结构

左边:对网络层数较少的使用的残差结构
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
在主分支上经过一系列卷积层后得到的特征矩阵,再与输入特征矩阵进行相加(两个矩阵在相同维度的位置上加法运算(googlenet:深度方向拼接)),相加之后再通过relu函数

右边:对网络层数较多的使用的残差结构
两个1x1的卷积层:输入矩阵深度(channel)为256,通过第一个1x1的卷积层后深度变为64(—>降维),……,通过第二个1x1的卷积层后深度变为256(—>升维)。
—> 这样原矩阵跟输出的矩阵宽度高度深度是一样的,即可相加。

左右两边所用到的参数对比
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
原文中的参数列表:
网络框架类似
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

  • 实线与虚线:
    实线结构:输入和输出的特征矩阵形状shape一样,可以直接进行相加。
    虚线结构:输入输出shape不一致,需要调整stride和kernel size。
    人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
    人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
    输入:56x56x64
    输出:28x28x128
    通过虚线残差结构得到输出后,再将输出输入到实线残差结构中,才能保证输入、输出特征矩阵的shape是一模一样的。

    就算是虚线也不一样,有的层是高宽、通道数都调整,有的只调整深度。

    人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
    人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
    虚线残差结构有一个额外作用:将输入矩阵的高、宽、深度都进行变换。
    对于实线部分,它所输入的特征矩阵和输出的特征矩阵是一模一样的,所以在conv3_x、conv4_x、conv5_x对应的残差结构第一层都是指的虚线残差结构。因为第一层必须要将上一层的输出矩阵的高宽深度调整为当前层所需要的特征矩阵的高宽深度。
    ————————————————————————

对于18层和34层的网络而言,通过池化层后所得到的特征矩阵就是56x56x64,而残差结构所需要的刚好也是这个shape。所以对这种浅层网络而言,不需要在第一层使用虚线的残差结构的。人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
但是对50层、101层、152层这样的深层结构而言,通过最大池化下采样后,所得到的特征矩阵深度是56x56x64,但是所期望的输入特征矩阵是 56x56x256。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

BN

人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
目的:
①使一批(batch)数据所对应的feature map(特征矩阵)每个channel所对应的维度满足均值为0、方差为1的分布规律。
②加速网络的训练,提升准确率。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
调整feature map,让每一层的feature map都能满足均值为0、方差为1的分布规律。
调整的是输入的一批数据的feature map的每一层的分布,并不是单独去调整某一个图像的feature map所对应的每一层的的分布。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
假设batch size设置为2,输入两张图片之后所得到的特征矩阵:feature1、feature2。
对这两个特征矩阵进行BN处理:
①计算均值和方差。
对channel1:计算整个batch中channel为1的均值和方差。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

通过求均值、求方差的公式,分别求得均值和方差(都是向量,维度与深度对应)
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
再通过论文所给的公式计算,就能得到通过BN之后所得到的特征矩阵的值。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

使用BN时需要注意的一些问题

人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
1、因为在训练中是要不断统计均值和方差,在验证过程或者预测过程中,使用的是历史统计的方差, 不是使用当前计算的均值和方差。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

迁移学习

人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
1、大大减少训练时间。
2、若网络特别大(对应参数多),而数据集又特别小,不足以训练整个网络。—> 出现过拟合。

过拟合:数据太少,模型无法充分训练,容易过度拟合的符合少量训练数据的特征

**使用别人预训练好的模型参数,一定要注意别人预处理的方式。**改成跟别人一样的与处理方式。

迁移学习简介
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
比较通用的信息,在本网络中适用,在其他网络中也适用。
将浅层网络中的一些参数迁移到新的网络中来,则新网络也有了识别底层特征的能力。则新网络可以更加快速地学习数据集的高维特征。

常见的迁移学习方式
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
1、载入权重后训练所有的参数。
使用别人预训练好的模型参数,全部载入进来后,针对我们的数据集,去训练所有层的网络参数。
注意最后一层全连接层(途中以VGG为例),要将这一层的全连接节点个数改成我们网络所对应的分类个数。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
2、载入后只训练最后几层的参数。
如:固定全连接层之前的所有模型参数,只训练最后的三层全连接层。这样参数会变少,训练速度会变快。
3、载入权重后在原网络的基础上再添加一层新的全连接层,仅训练最后以恶全连接层。这样就可以载入所有的模型参数。
新的全连接层的节点个数就是训练集的分类个数。

在很短时间内得到一个比较理想的结果:2、3都行
硬件参数不受限,想要得到一个最优的结果:1

pytorch搭建ResNet

搭建针对18层、34层的残差结构

conv3_x、conv4_x、conv5_x对应的残差结构第一层都是指的虚线残差结构。每一层的第一个残差结构有降维的作用。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
BasicBlock既要有实线的残差结构,又要有虚线的残差结构功能。

下采样:图像高宽变小。上采样:图像高宽变大。

人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

搭建针对50层、101层、152层残差结构。

4倍人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
blocks_num
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

resnet结构

人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

train

(以34层的为例)
可以把预训练权重的链接复制到迅雷里面下载
放到项目中
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
训练脚本的大部分代码与之前的AlexNet、VGG……相同,有一些不一样的地方是:

1、训练集:在对图像进行标准化处理的时候,这里的标准化参数都是来自官网所提供的一个教程中,照搬参数。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
验证集:之前都是把图片resize到224224。
这里:将最小边缩放到256(原图片长宽比对应不动)、
中心裁剪,裁剪出一个224
224大小的图片
(如果采用迁移学习,必须跟人家的与处理方式一样,不然训练效果很差。不能直接resize 224)
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

2、linux将这个线程个数设置成>0的数,加速图像预处理过程
(windows一定记得将num_workers设置为0)
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
3、此处实例化没有传入num_classes
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

predict 预测脚本

1、采用和训练方法一样的标准化处理,所以这里的参数与训练中使用的一样。
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建
2、传入num_classes=5
人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建文章来源地址https://www.toymoban.com/news/detail-410159.html

到了这里,关于人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 人工智能学习07--pytorch21--目标检测:YOLO系列理论合集(YOLOv1~v3)

    人工智能学习07--pytorch21--目标检测:YOLO系列理论合集(YOLOv1~v3)

    如果直接看yolov3论文的话,会发现有好多知识点没见过,所以跟着视频从头学一下。 学习up主霹雳吧啦Wz大佬的学习方法: 想学某个网络的代码时: 到网上搜这个网络的讲解 → 对这个网络大概有了印象 → 读论文原文 ( 很多细节都要依照原论文来实现, 自己看原论文十分

    2024年02月10日
    浏览(37)
  • 人工智能(pytorch)搭建模型14-pytorch搭建Siamese Network模型(孪生网络),实现模型的训练与预测

    人工智能(pytorch)搭建模型14-pytorch搭建Siamese Network模型(孪生网络),实现模型的训练与预测

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型14-pytorch搭建Siamese Network模型(孪生网络),实现模型的训练与预测。孪生网络是一种用于度量学习(Metric Learning)和比较学习(Comparison Learning)的深度神经网络模型。它主要用于学习将两个输入样本映射到一个

    2024年02月11日
    浏览(284)
  • 人工智能深度学习100种网络模型,精心整理,全网最全,PyTorch框架逐一搭建

    人工智能深度学习100种网络模型,精心整理,全网最全,PyTorch框架逐一搭建

    大家好,我是微学AI,今天给大家介绍一下人工智能深度学习100种网络模型,这些模型可以用PyTorch深度学习框架搭建。模型按照个人学习顺序进行排序: 深度学习模型 ANN (Artificial Neural Network) - 人工神经网络:基本的神经网络结构,包括输入层、隐藏层和输出层。 学习点击地

    2024年02月14日
    浏览(70)
  • 人工智能(Pytorch)搭建模型2-LSTM网络实现简单案例

    人工智能(Pytorch)搭建模型2-LSTM网络实现简单案例

     本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052  大家好,我是微学AI,今天给大家介绍一下人工智能(Pytorch)搭建模型2-LSTM网络实现简单案例。主要分类三个方面进行描述:Pytorch搭建神经网络的简单步骤、LSTM网络介绍、Pytorch搭建LSTM网络的代码实战 目录

    2024年02月03日
    浏览(37)
  • 人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络(SNN)实现及应用

    人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络(SNN)实现及应用

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络(SNN)实现及应用,脉冲神经网络(SNN)是一种基于生物神经系统的神经网络模型,它通过模拟神经元之间的电信号传递来实现信息处理。与传统的人工神经网络(ANN)不同,SNN 中的

    2024年02月08日
    浏览(41)
  • 人工智能(Pytorch)搭建GRU网络,构造数据实现训练过程与评估

    人工智能(Pytorch)搭建GRU网络,构造数据实现训练过程与评估

    大家好,我是微学AI,今天给大家介绍一下人工智能(Pytorch)搭建模型3-GRU网络的构建,构造数据实现训练过程与评估,让大家了解整个训练的过程。 GRU(Gated Recurrent Unit,门控循环单元)是一种循环神经网络(RNN)的变体,用于处理序列数据。对于每个时刻,GRU模型都根据当前

    2023年04月09日
    浏览(40)
  • 人工智能(Pytorch)搭建模型1-卷积神经网络实现简单图像分类

    人工智能(Pytorch)搭建模型1-卷积神经网络实现简单图像分类

    本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 目录 一、Pytorch深度学习框架 二、 卷积神经网络 三、代码实战 内容: 一、Pytorch深度学习框架 PyTorch是一个开源的深度学习框架,它基于Torch进行了重新实现,主要支持GPU加速计算,同时也可以在CPU上运行

    2024年02月03日
    浏览(44)
  • 人工智能(pytorch)搭建模型11-pytorch搭建DCGAN模型,一种生成对抗网络GAN的变体实际应用

    人工智能(pytorch)搭建模型11-pytorch搭建DCGAN模型,一种生成对抗网络GAN的变体实际应用

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型11-pytorch搭建DCGAN模型,一种生成对抗网络GAN的变体实际应用,本文将具体介绍DCGAN模型的原理,并使用PyTorch搭建一个简单的DCGAN模型。我们将提供模型代码,并使用一些数据样例进行训练和测试。最后,我们将

    2024年02月08日
    浏览(43)
  • 人工智能概论报告-基于PyTorch的深度学习手写数字识别模型研究与实践

    人工智能概论报告-基于PyTorch的深度学习手写数字识别模型研究与实践

    本文是我人工智能概论的课程大作业实践应用报告,可供各位同学参考,内容写的及其水,部分也借助了gpt自动生成,排版等也基本做好,大家可以参照。如果有需要word版的可以私信我,或者在评论区留下邮箱,我会逐个发给。word版是我最后提交的,已经调整统一了全文格

    2024年02月05日
    浏览(45)
  • 深度学习2.神经网络、机器学习、人工智能

    深度学习2.神经网络、机器学习、人工智能

    目录 深度学习、神经网络、机器学习、人工智能的关系 大白话解释深度学习 传统机器学习 VS 深度学习 深度学习的优缺点 4种典型的深度学习算法 卷积神经网络 – CNN 循环神经网络 – RNN 生成对抗网络 – GANs 深度强化学习 – RL 总结 深度学习 深度学习、机器学习、人工智能

    2024年02月11日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包