Resnet BatchNormalization 迁移学习

时间:2015

网络中的亮点:

  • 超深的网络结构(突破1000层)
  • 提出residual模块
  • 使用Batch  Normalization加速训练(丢弃dropout)

层数越深效果越好?

是什么样的原因导致更深的网络导致的训练效果更差呢?

梯度消失和梯度爆炸

随着网络层数的不断加深,梯度消失和梯度爆炸的现象会越来越明显,

梯度消失:假设每一层的误差梯度是一个小于1的数,那么在我们反向传播过程中,每向前传播一次,都要乘以小于1的误差梯度。那么当我们网络越来越深的时候,所乘的小于1的系数越多,那么久越趋近于0,这样梯度就会越来越小,造成梯度消失现象。

梯度爆炸:假设每一层的误差梯度是一个大于1的数,那么在我们反向传播过程中,每向前传播一次,都要乘以大于1的误差梯度。那么当我们网络越来越深的时候,所乘的大于1的系数越多,,这样梯度就会越来越大,造成梯度爆炸现象。

退化问题

解决了梯度消失和梯度爆炸的问题后,仍存在层数深的效果还是没有层数小的效果好。怎样解决呢,在我们的resnet当中提出了一个叫做“残差”的结构。

梯度消失和梯度爆炸现象怎么解决呢?

数据标准化处理,权重初始化,以及BN(Batch Normalization).

residual结构

 shotcut:捷径的意思。主分支和侧分支要相加,两个的shape一定要相同。

Batch Normalization

参考链接:Batch Normalization详解以及pytorch实验_pytorch batch normalization-CSDN博客

Bath Normalization的目的是使我们的一批(Batch)feature map满足均值为0,方差为1的分布规律。通过该方法能够加速网络的收敛并提升准确率。

 如下图所示,对于Conv1来说输入的就是满足某一分布的特征矩阵,但对于Conv2而言输入的feature map就不一定满足某一分布规律了(注意这里所说满足某一分布规律并不是指某一个feature map的数据要满足分布规律,理论上是指整个训练样本集所对应feature map的数据要满足分布规律)。而我们Batch Normalization的目的就是使我们的feature map满足均值为0,方差为1的分布规律。

 使用BN时需要注意的问题

(1)训练时要将traning参数设置为True,在验证时将trainning参数设置为False。在pytorch中可通过创建模型的model.train()和model.eval()方法控制。因为在我们训练过程当中,需要我们不断去统计均值和方差,而在我们的验证或者预测过程当中使用的是我们历史统计的均值和方差,而不是当前所计算的均值和方差。

(2)batch size尽可能设置大点,设置小后表现可能很糟糕,设置的越大求的均值和方差越接近整个训练集的均值和方差。值设置得越大,越接近我们整个样本训练集的均值和方差,效果也会越好。设置得很小的时候,比如说它的极限状况也就是batch size设置为1,这种情况使用BN是没有什么作用的,效果可能还会变差。

(3)建议将bn层放在卷积层(Conv)和激活层(例如Relu)之间,且卷积层不要使用偏置bias,因为没有用,参考下图推理,即使使用了偏置bias求出的结果也是一样的。

迁移学习

使用迁移学习的优势:

  1. 能够快速的训练处一个理想的结果
  2. 当数据集较小时也能训练处理想的效果

什么是迁移学习

 对于浅层的卷积层而言,所学习到的角点信息和纹理信息等是比较通用的信息,这些信息不仅是在本网络中适用,在其他网络中也同样适用。所以就会有迁移的这么一个概念。就是将我们学习好的一些浅层网络的参数迁移到我们新的网络中去,这样我们新的网络就也拥有了识别底层通用特征的能力了,新的网络拥有了这些底层通用的检测识别能力之后,我们就能更加快速地去学习新的数据集的高维特征。

常见的迁移学习方式:

  1. 载入权重后训练所有参数
    1. 最后一层无法载入预训练模型参数
  2. 载入权重后只训练最后几层参数
    1. 载入所有模型参数后,固定全连接之前的所有模型参数,只去训练最后三层全连接层,这样我们所需训练的参数就会变少,训练速度也会变快。
  3. 载入权重后在原网络基础上再添加一层全连接层,进训练最后一个全连接层。
    1. 由于我们训练集的分类个数和原预训练集的分类个数不一样,所以最后一层是无法载入的。当我们使用第三个方法,也可以将最后一层的参数载入进去,只不过我们在最后的全连接层之后再加上新的全连接层,这个新的全连接层的节点个数也就是我们所采用的训练集的分类个数,然后仅仅去训练最后一层的参数。

自己的硬件条件有限或者训练时间有要求,第二种第三种方法都适合。对于硬件参数不受限,而且希望得到一个最优的结果,那就要采用第一种方法,这种方法相比于后面的两种方法训练时间稍微长一点,但最终达到的效果也要比后两种方法的好。但相比不用迁移学习的方法,还是要快很多的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云计算:OpenStack 分布式架构部署(单控制节点与多计算节点)

目录 一、实验 1.环境 2. 计算服务安装(计算节点2) 3. 网络服务安装(计算节点2) 一、实验 1.环境 (1) 主机 表1 主机 主机架构IP备注controller控制节点192.168.204.210已部署compute01计算节点1192.168.204.211 已部署compute02计算节点2192.168.204.212 (…

如何下载Sentinel-1数据

Sentinel-1是欧洲空间局(ESA)的一组地球观测卫星,属于Copernicus计划的一部分。该计划旨在为全球环境监测提供数据,并支持应对气候变化、自然灾害和人类活动的挑战。Sentinel-1卫星的主要任务是提供全天候、全时段、高分辨率的合成…

C#-CSC编译环境搭建

一.Microsoft .NET Framework 确保系统中安装Microsoft .NET Framework相关版本下载 .NET Framework 4.7 | 免费官方下载 (microsoft.com)https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/net47 二.编译环境搭建 已经集成编译工具csc.exe,归档至gitcode,实现us…

5G随身WiFi避坑,5G随身WiFi口碑推荐,5G随身WiFi避雷,5G随身WiFi好用吗?

第一、切忌盲目入坑,目前市面上的主流随身 WiFi都是4G网络,不支持5G,当一些只卖几十块的随身WiFi,商家告诉你是5G随身WiFi的时候,直接拉黑。随身WiFi芯片都上百了,设备才几十块,怎么可能&#x…

浅聊配置化-要不要实现动态表单

1、配置化的原则 配置化是一种抽象,把事物分成2类:不变的,可变的。 如果事物都是可变的,是无法实现配置化的。 配置化的根本在于找到不变的事物,基于不变的事物进行可变事物的配置。 所以,认为一切皆可…

老子的《道德经》透露,不努力反而更成功

人类生而自由,但到处都是枷锁。 永远不要怀疑经过慎思且足够投入的一小群人能否改变这个世界。事实上,只有他们才办得到。 优美灵魂的两个发展方向:崇拜道德的天才,对别人实行道德的判断。 一、道 《道德经》开始的名字是《老子…

数据结构:第7章:查找(复习)

目录 顺序查找: 折半查找: 二叉排序树: 4. (程序题) 平衡二叉树: 顺序查找: ASL 折半查找: 这里 j 表示 二叉查找树的第 j 层 二叉排序树: 二叉排序树(Binary Search Tree&…

零知识证明(zk-SNARK)- groth16(一)

全称为 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge,简洁非交互式零知识证明,简洁性使得运行该协议时,即便 statement 非常大,它的 proof 大小也仅有几百个bytes,并且验证一个 proof 的时间可以达…

2023年年度总结,一个小白的CSDN涨粉历程

前言 滚滚长江东逝水,一去不复返。 转眼间已到2024年节点,时间如滚滚长江水向东奔流不息,在长江消失之前,都不会停歇,也不会回头。人亦如此,不管是生活还是学习,都是不断往前走的过程&#xff…

数据中台的数据处理及应用说明

科技飞速发展的时代,企业信息化建设会越来越完善,越来越体系化,当今数据时代背景下更加强调、重视数据的价值,以数据说话,通过数据为企业提升渠道转化率、改善企业产品、实现精准运营,为企业打造自助模式的…

[BUG]Datax写入数据到psql报不能序列化特殊字符

1.问题描述 Datax从mongodb写入数据到psql报错如下 org.postgresql.util.PSQLException: ERROR: invalid bytesequence for encoding "UTF8": 0x002.原因分析 此为psql独有的错误,不能对特殊字符’/u0000’,进行序列化,需要将此特殊字符替…

GCP 创建1个windows vm 并连接

有时需要临时使用1台windows 的机器 创建windows vm 既然是临时 直接用gcloud command gcloud compute instances create instance-windows \--zoneeurope-west2-c \--machine-typen2d-standard-4 \--boot-disk-size100GB \--image-projectwindows-cloud \--imagewindows-se…

力扣回溯算法-电话号码的字母组合

力扣第17题,电话号码的字母组合 题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 .电话号码的字母组合 示例: 输入:“2…

【动态规划】【字符串】C++算法:正则表达式匹配

作者推荐 视频算法专题 涉及知识点 动态规划 字符串 LeetCode10:正则表达式匹配 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ’ 匹配零个或多个前面的那一个元素 所谓匹配,是…

ORACLE Primavera Unifier v23.12 最新虚拟机(VM)分享下载

引言 根据上周的计划,我近日简单制作了一个基于ORACLE Primavera Unifier 最新版23.12的虚拟机演示环境,里面包括了unifier的全套系统服务 此虚拟系统环境仅用于演示、培训和测试目的。如要在生产环境中使用此虚拟机,请您与Oracle 销售代表联…

使用setoolkit制作钓鱼网站并结合dvwa靶场储存型XSS漏洞利用

setoolkit是一款kali自带的工具 使用命令启动 setoolkit 1) Social-Engineering Attacks 1) 社会工程攻击 2) Penetration Testing (Fast-Track) 2) 渗透测试(快速通道) 3) Third Party Module…

排序算法-选择插入排序

文章目录 排序算法-选择插入排序 排序算法-选择插入排序 /// <summary>/// 选择插入排序/// Krystal 2023-11-10 09:02:06 每一次找一个最小的放到正确的位置上/// 直接选择排序通过每一轮的比较&#xff0c;找到最大值和最小值&#xff0c;将最大值的节点和右边交换&…

[OCR]Python 3 下的文字识别CnOCR

目录 1 CnOCR 2 安装 3 实践 1 CnOCR CnOCR 是 Python 3 下的文字识别&#xff08;Optical Character Recognition&#xff0c;简称OCR&#xff09;工具包。 工具包支持简体中文、繁体中文&#xff08;部分模型&#xff09;、英文和数字的常见字符识别&#xff0c;支持竖…

【Elasticsearch源码】 分片恢复分析

带着疑问学源码&#xff0c;第七篇&#xff1a;Elasticsearch 分片恢复分析 代码分析基于&#xff1a;https://github.com/jiankunking/elasticsearch Elasticsearch 8.0.0-SNAPSHOT 目的 在看源码之前先梳理一下&#xff0c;自己对于分片恢复的疑问点&#xff1a; 网上对于E…

outlook邮箱群发邮件方法?邮箱如何群发?

outlook邮箱群发邮件如何使用&#xff1f;QQ邮箱设置群发的步骤&#xff1f; Outlook邮箱群发邮件&#xff1a;必要性 Outlook邮箱作为全球广泛使用的邮件服务之一&#xff0c;不仅提供了便捷的邮件收发功能&#xff0c;还支持多种附件、日历提醒及强大的联系人管理。Outlook…