原 PyTorch学习之六个学习率调整策略.图示

2023-10-27

  • torch.optim.lr_scheduler.LambdaLR
  • torch.optim.lr_scheduler.StepLR
  • torch.optim.lr_scheduler.MultiStepLR
  • torch.optim.lr_scheduler.ExponentialLR
  • torch.optim.lr_sheduler.CosineAnneaingLR
  • torch.optim.lr_scheduler.ReduceLROnPlatea
  • torch.optim.lr_scheduler.CyclicLR

参考:https://www.jianshu.com/p/a20d5a7ed6f3

PyTorch学习率调整策略通过torch.optim.lr_scheduler接口实现。PyTorch提供的学习率调整策略分为三大类,分别是

    a. 有序调整:等间隔调整(Step),按需调整学习率(MultiStep),指数衰减调整(Exponential)和 余弦退火CosineAnnealing。
    b. 自适应调整:自适应调整学习率 ReduceLROnPlateau。
    c. 自定义调整:自定义调整学习率 LambdaLR。

1 等间隔调整学习率 StepLR

等间隔调整学习率,调整倍数为 gamma 倍,调整间隔为 step_size。间隔单位是step。需要注意的是, step 通常是指 epoch,不要弄成 iteration 了。

torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)

参数:

    step_size(int)- 学习率下降间隔数,若为 30,则会在 30、 60、 90…个 step 时,将学习率调整为 lr*gamma。
    gamma(float)- 学习率调整倍数,默认为 0.1 倍,即下降 10 倍。
    last_epoch(int)- 上一个 epoch 数,这个变量用来指示学习率是否需要调整。当last_epoch 符合设定的间隔时,就会对学习率进行调整。当为-1 时,学习率设置为初始值。

 2 按需调整学习率 MultiStepLR

按设定的间隔调整学习率。这个方法适合后期调试使用,观察 loss 曲线,为每个实验定制学习率调整时机。

torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones, gamma=0.1, last_epoch=-1)

参数:

    milestones(list)- 一个 list,每一个元素代表何时调整学习率, list 元素必须是递增的。如 milestones=[30,80,120]
    gamma(float)- 学习率调整倍数,默认为 0.1 倍,即下降 10 倍。

3 指数衰减调整学习率 ExponentialLR

按指数衰减调整学习率,调整公式: lr=lr∗gamma∗∗epoch

lr=lr∗gamma∗∗epoch

torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma, last_epoch=-1)

参数:

    gamma- 学习率调整倍数的底,指数为 epoch,即 gamma**epoch

4 余弦退火调整学习率 CosineAnnealingLR:https://arxiv.org/pdf/1704.00109.pdf

以余弦函数为周期,并在每个周期最大值时重新设置学习率。以初始学习率为最大学习率,以 2∗Tmax为周期,在一个周期内先下降,后上升。

torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0, last_epoch=-1)

参数:

    T_max(int)- 一次学习率周期的迭代次数,即 T_max 个 epoch 之后重新设置学习率。
    eta_min(float)- 最小学习率,即在一个周期中,学习率最小会下降到 eta_min,默认值为 0。

学习率调整公式为:
在这里插入图片描述
可以看出是以初始学习率为最大学习率,以2*Tmax为周期,在一个周期内先下降,后上升。

实例:T_max = 200, 初始学习率 = 0.001, eta_min = 0
在这里插入图片描述

5 自适应调整学习率 ReduceLROnPlateau

当某指标不再变化(下降或升高),调整学习率,这是非常实用的学习率调整策略。
例如,当验证集的 loss 不再下降时,进行学习率调整;或者监测验证集的 accuracy,当accuracy 不再上升时,则调整学习率。

torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10, verbose=False, threshold=0.0001, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-08)

参数:

    mode(str)- 模式选择,有 min 和 max 两种模式, min 表示当指标不再降低(如监测loss), max 表示当指标不再升高(如监测 accuracy)。
    factor(float)- 学习率调整倍数(等同于其它方法的 gamma),即学习率更新为 lr = lr * factor
    patience(int)- 忍受该指标多少个 step 不变化,当忍无可忍时,调整学习率。
    verbose(bool)- 是否打印学习率信息, print(‘Epoch {:5d}: reducing learning rate of group {} to {:.4e}.’.format(epoch, i, new_lr))
    threshold_mode(str)- 选择判断指标是否达最优的模式,有两种模式, rel 和 abs。
    当 threshold_mode == rel,并且 mode == max 时, dynamic_threshold = best * ( 1 +threshold );
    当 threshold_mode == rel,并且 mode == min 时, dynamic_threshold = best * ( 1 -threshold );
    当 threshold_mode == abs,并且 mode== max 时, dynamic_threshold = best + threshold ;
    当 threshold_mode == rel,并且 mode == max 时, dynamic_threshold = best - threshold;
    threshold(float)- 配合 threshold_mode 使用。
    cooldown(int)- “冷却时间“,当调整学习率之后,让学习率调整策略冷静一下,让模型再训练一段时间,再重启监测模式。
    min_lr(float or list)- 学习率下限,可为 float,或者 list,当有多个参数组时,可用 list 进行设置。
    eps(float)- 学习率衰减的最小值,当学习率变化小于 eps 时,则不调整学习率。

 

6 自定义调整学习率 LambdaLR

为不同参数组设定不同学习率调整策略。调整规则为,lr=base_lr∗lmbda(self.last_epoch)

fine-tune 中十分有用,我们不仅可为不同的层设定不同的学习率,还可以为其设定不同的学习率调整策略。

torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1)

参数:

    lr_lambda(function or list)- 一个计算学习率调整倍数的函数,输入通常为 step,当有多个参数组时,设为 list。

7 自定义调整学习率:CyclicLR https://arxiv.org/pdf/1506.01186.pdf

torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr, max_lr, step_size_up=2000, step_size_down=None, mode='triangular', gamma=1.0, scale_fn=None, scale_mode='cycle', cycle_momentum=True, base_momentum=0.8, max_momentum=0.9, last_epoch=-1)

 

2.1 学习率调整小结

Pytorch提供了六种学习率调整方法,可分为三大类,分别是

    有序调整;
    自适应调整;
    自定义调整。
    第一类,依一定规律有序进行调整,这一类是最常用的,分别是等间隔下降(Step),按需设定下降间隔(MultiStep),指数下降(Exponential)和CosineAnnealing。这四种方法的调整时机都是人为可控的,也是训练时常用到的。
    第二类,依训练状况伺机调整,这就是ReduceLROnPlateau方法。该法通过监测某一指标的变化情况,当该指标不再怎么变化的时候,就是调整学习率的时机,因而属于自适应的调整。
    第三类,自定义调整,Lambda。Lambda方法提供的调整策略十分灵活,我们可以为不同的层设定不同的学习率调整方法,这在fine-tune中十分有用,我们不仅可为不同的层设定不同的学习率,还可以为其设定不同的学习率调整策略,简直不能更棒!

 
---------------------  
作者:TensorSense  
来源:CSDN  
原文:https://blog.csdn.net/u011995719/article/details/89486359  
版权声明:本文为博主原创文章,转载请附上博文链接!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

原 PyTorch学习之六个学习率调整策略.图示 的相关文章

  • 什么是全量表,增量表,快照表,拉链表?

    这一篇文章我们的目的是搞懂这四种表的概念 闲话不多说 直接看文字 全量表 全量表没有分区 表中的数据是前一天的所有数据 比如说今天是24号 那么全量表里面拥有的数据是23号的所有数据 每次往全量表里面写数据都会覆盖之前的数据 所以全量表不能
  • Ubuntu20.04 Server调整默认分辨率

    问题引入 把一台台式机安装成Ubuntu20 04 Server版本后 发现没有界面操作不方便 又给它装了个桌面 安装完后发现HDMI接到显示器的分辨率只有800 600 而且在系统配置里还不能选择其它的分辨率配置 首先怀疑是不是显卡驱动没
  • VS Code之Vue开发常用插件

    Auto Close Tag 自动补全html标签 Auto Rename Tag 同步更改html尾标签 ESLint ESlint语法提示 settings json 文件 eslint nodePath E WebStorm 应用路径
  • openwrt不支持opkg的解决办法

    opkg是openwrt的插件安装命令 类似Ubuntu上的apt get或者centos上的yum 好多采用openwrt系统的设备 最后都把opkg裁剪掉了 如果拿到一个设备又想用opkg安装网络上下载到的ipk包 应该怎么办呢 其实也

随机推荐

  • Fluent Nhibernate and Stored Procedures

    sql DROP TABLE Department GO CREATE TABLE Department Id INT IDENTITY 1 1 PRIMARY KEY DepName VARCHAR 50 PhoneNumber VARC
  • 【深度学习】最全的十九种损失函数汇总

    tensorflow和pytorch很多都是相似的 这里以pytorch为例 文章目录 一 L1范数损失 L1Loss 二 均方误差损失 MSELoss 三 交叉熵损失 CrossEntropyLoss 四 KL 散度损失 KLDivLos
  • 数仓建模宽表设计

    一 宽表的设计 其实宽表是数仓里面非常重要的一块 前面我们介绍过了维度表事实表 今天我们介绍一下宽表 前面我们说过了数仓是分层的 这是技术进步和时代变化相结合的产物 数仓的分层式为了更好地管理数仓以及更加高效地进行数据开发 宽表主要出现在d
  • 关于二进制的一个题目

    关于二进制的一个题目 猜测下面count的个数 test23d cpp 定义控制台应用程序的入口点 include stdafx h include
  • 【Copilot】GitHub Copilot could not connect to server. Extension activation failed: “read ECONNRESET“

    背景 搞了个Copilot 在VS里完美运行 但VScode里就一直报这个错误 GitHub Copilot could not connect to server Extension activation failed read ECON
  • 数据库锁表如何处理

    前段时间阿粉在公司开发的时候 不慎导致了数据库产生了锁表的操作 因为阿粉之前从来没有遇到过 之前只是了解过一点 所以导致了锁表 于是阿粉为了解决问题 研究了一下这一部分的内容 于是决定把这一块的知识分享给大家 数据库锁定机制 话说如果你只是
  • 将pbr移植到osg中的需要注意模型法线

    在pbr移植到osg中时 有时发现发黑 原因是光线方向和模型方向相反 在max dot N L 0 计算是 自然就是0了 也很简单 取绝对值即可 即 改为max abs dot N L 0 虽然不一定正确 但是效果起码出来了 另外 传递浮点
  • react-json-view(一看就会的教程)

    最近业务上需要用到json可视化的需求 在这给大家安利一个前端页面很好用的插件react json view 第一步 安装插件npm install save react json view 或者 yarn react json view
  • 持续集成Jenkins安装部署

    Jenkins是一个在DevOps领域中 支持CI CD 持续集成 持续交付 过程域的开源项目 其提供可扩展插件的支持 以自动化的机制对项目工程执行打包 编译 构建 测试以及最终发布到目的地服务器并成功部署运行 本文主要描述Jenkins的
  • Angular表单创建和校验

    Angular中提供了模板驱动表单和响应式表单 相对来做 模板驱动表单使用更加简单 只需要在表单外围添加 myForm ngForm 指令 给每个表单项添加ngModel指令和name属性 然后就可以通过myform value获取到表单中
  • 阿里云数据库RDS MySQL 物理全备文件数据恢复至自建数据库Mysql 5.7中

    环境介绍 CentOS 7 5 Mysql 5 7 percona xtrabackup 24 注意事项 操作系统中已安装数据恢复工具Percona XtraBackup 您可以从Percona XtraBackup官网下载安装 MySQL
  • 高并发系统设计--负载均衡与API网关

    负载均衡 负载均衡 有两个用途 1 将负载均衡的分配到多个处理节点上 减少单个处理节点的请求量 提升整体系统的性能 2 作为流量入口 对请求方屏蔽服务节点的部署细节 实现对业务方无感的扩容 可以分为两大类 一类是代理类的负载均衡服务 另一类
  • VMware Workstation 17 pro下载安装教程

    VMware Workstation 17 pro下载安装教程 Hello 感谢大家阅读我的文章 有问题评论区留言呦 最近 课题组新配了电脑 自带Win11操作系统 所以我这里安装VMware的时候就下载了最新版的17 pro 它是支持Wi
  • NCC中实现单点登录服务发布

    NCC中实现单点登录服务发布 前言 本文档旨在从方案 能力 及开发方式几个方面 对单点登录进行讲解 相关资料 百度网盘 社区资料 概念介绍 单点登录 Single Sign On 简称为 SSO 是比较流行的企业业务整合的解决方案之一 SS
  • vue实现动画滚动效果

    效果如下 npm https www npmjs com package vue seamless scroll activeTab versions 官网 https chenxuan0000 github io vue seamless
  • WebSocket 协议介绍

    WebSocket 协议 1 相关技术背景介绍 客户端 浏览器 和 服务端在是怎么进行通信的呢 当前许多传统应用的 Web 项目是通过简单的 AJAX 来进行通信的 AJAX 是一种用于创建快速动态网页的技术 通过在后台与服务器进行少量数据
  • 力扣645 错误的集合 位运算

    1 https leetcode cn com problems set mismatch solution cyi huo fa xiang jie by feng feng 19 边界条件的设定很难想到 t sum sum https
  • JDBC连接MySQL,增删改查方法

    1 加载驱动 Class forName 参数为 com mysql jdbc Driver Mysql 5 8版本 8 0版本jar包 参数为 com mysql cj jdbc Driver 2 建立连接 URL jdbc mysql
  • 项目管理1:嵌入式系统项目失败的7个隐形杀手

    转自飞凌论坛一部分 http bbs witech com cn forum php mod viewthread tid 71580 extra page 3D3 人人都是项目经理的年代 但不是人人都是合格的项目经理 1 范围潜变 每个项
  • 原 PyTorch学习之六个学习率调整策略.图示

    How to adjust Learning Rate torch optim lr scheduler LambdaLR torch optim lr scheduler StepLR torch optim lr scheduler M