torch.optim.lr_scheduler 模块提供了一些根据 epoch 迭代次数来调整学习率 lr 的方法。为了能够让损失函数最终达到收敛的效果,通常 lr 随着迭代次数的增加而减小时能够得到较好的效果。torch.optim.lr_scheduler.ReduceLROnPlateau 则提供了基于训练中某些测量值使学习率动态下降的方法。
详情见https://pytorch.org/docs/stable/optim.html

model = [Parameter(torch.randn(2, 2, requires_grad=True))]
optimizer = SGD(model, 0.1)
scheduler = ExponentialLR(optimizer, gamma=0.9)for epoch in range(20):for input, target in dataset:optimizer.zero_grad()output = model(input)loss = loss_fn(output, target)loss.backward()# 1.进行参数的更新optimizer.step()# 2.对学习率进行更新    scheduler.step()
# 注意:现在,在很多祖传代码中,scheduler.step()的位置可能是在参数更新optimizer.step()之前
# 检查您的pytorch版本如果是V1.1.0+,那么需要将scheduler.step()在optimizer.step()之后调用        

其他常见scheduler
1 恒定lr
这是最简单的一种形式了, 也就是学习率从始至终始终保持不变。

2 分段lr
顾名思义,就是学习率是一个分段函数, 在不同阶段采用不同的学习率。
常用的有2种, StepLR 和MutiStepLR。 StepLR只能均匀的变化, 也就是固定的step(或epoch)后学习率固定变化。 MutiStepLR则灵活一些,可以在指定的步长的位置改变学习率。 但是控制参数也更多一些。
实际上, StepLR可以看做MutiStepLR的一种特殊形式。

比如, 下图中StepLR策略为每30个epoch, 学习率降低10倍。

下图中的MutiStepLR策略为在30和80个 epoch的位置, 学习率降低10倍。

3 指数lr
学习率以指数规律变化(一般是降低)。

4 CosineAnnealingLR
学习率以正弦规律变化。一般情况下, 只取半个或一个周期。 半个周期一般都是从最大到最小, 一个周期一般都是从最小到最大, 再到最小。

5 CyclicLR
顾名思义, 就是学习率以某种规律循环变化, 变化的规律可以有很多(如下图中就是一种线性变化)。 其实上面的CosineAnnealingLR在取多个周期的时候也是一种CyclicLR。

6 OneCycleLR
其实有了上面的CycleLR, 理解OneCycleLR就非常简单了。OneCycleLR其实就是只取CycleLR的一个周期。

7 WarmupLR
所谓warmup, 就是指在一开始的时候学习率较小, 然后逐步变大。
这个策略经常和其他LR的策略结合使用。 如warmupLR + StepLR, 就是lr先从lr_min增加到lr_max, 然后再以StepLR的策略逐步变小。 再比如, warmupLR +CosineAnnealingLR, 就是学习率r先从lr_min增加到lr_max, 然后再以余弦规律下降。

Pytorch LR scheduler相关推荐

  1. Pytorch 学习率衰减 之 余弦退火与余弦warmup 自定义学习率衰减scheduler

    学习率衰减,通常我们英文也叫做scheduler.本文学习率衰减自定义,通过2种方法实现自定义,一是利用lambda,另外一个是继承pytorch的lr_scheduler import math i ...

  2. PyTorch迁移学习

    PyTorch迁移学习 实际中,基本没有人会从零开始(随机初始化)训练一个完整的卷积网络,因为相对于网络,很难得到一个足够大的数据集[网络很深, 需要足够大数据集].通常的做法是在一个很大的数据集上进 ...

  3. Pytorch Lightning 完全攻略!

    Datawhale干货 作者:Takanashi@知乎,编辑:极市平台 来源 | https://zhuanlan.zhihu.com/p/353985363 极市导读 作者实践中发现Pytorch- ...

  4. PyTorch 手把手搭建(MNIST)神经网络

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者:知乎 ...

  5. PyTorch Lightning 全攻略!

    来源:极市平台 本文约9600字,建议阅读10+分钟 本文作者与你分享使用Pytorch-Lightning心得. 写在前面 Pytorch-Lightning这个库我"发现"过两 ...

  6. 【深度学习】图解 9 种PyTorch中常用的学习率调整策略

    learning rate scheduling 学习率调整策略 01 LAMBDA LR 将每个参数组的学习率设置为初始lr乘以给定函数.当last_epoch=-1时,将初始lr设置为初始值. t ...

  7. Pytorch 加载部分预训练模型并冻结某些层

    目录 1  pytorch的版本: 2  数据下载地址: 3  原始版本代码下载: 4  直接上代码: 1  pytorch的版本: 2  数据下载地址: <https://download.p ...

  8. PyTorch框架学习十四——学习率调整策略

    PyTorch框架学习十四--学习率调整策略 一._LRScheduler类 二.六种常见的学习率调整策略 1.StepLR 2.MultiStepLR 3.ExponentialLR 4.Cosin ...

  9. Pytorch —— 学习率调整策略

    1.为什么要调整学习率 学习率控制梯度更新的快慢,在训练中,开始时的学习率比较大,梯度更新步伐比较大,后期时学习率比较小,梯度更新步伐比较小. 梯度下降:wi+1=wi−g(wi)w_{i+1}=w_ ...

最新文章

  1. NBT-2019-华大发布全球最大人体肠道细菌基因组集研究成果
  2. 这个最新无人车模拟环境,让仿真路测效率提升数千倍!华人团队提出,登上Nature子刊...
  3. mysql主从字符集不一致_MySQL多字节字符集造成主从数据不一致问题
  4. lisp修改界址线属性_如何获取界址线的界址线位置等扩展属性
  5. MPU6050姿态融合(转载)
  6. set hive.map.aggr=true 时统计PV数据错误
  7. 信息学奥赛一本通 1155:回文三位数
  8. oracle外部表kup-04023,Oracle外部表学习
  9. 微软发布首版基于 Chromium 79 的 Edge 浏览器
  10. Asp.Net MVC Web应用程序中的安全向量
  11. Python3 高级编程
  12. C#设计模式 之 抽象工厂模式
  13. SQL数据库学习之路(一)
  14. 笔记本电脑f11功能键_电脑技巧:键盘上F功能键F1-F12详解
  15. (三)碳排放如何计算
  16. 知识星球<我们谈论数据科学>-python30天打卡训练营Day1
  17. java批量替换word内容_word多个文档替换内容
  18. Windows_01_Windows系统的中的32位和64位(System32和SysWOW64)
  19. deepin连接企业加密wifi
  20. 北航计算机在职研究生多少钱,在职攻读北航研究生需要多少学费?

热门文章

  1. python英文诗歌统计_Python-Data-mining-Tutorial
  2. 计算机配置的内存的容量为4g,安装内存4g2g可用的原因和处理
  3. 计算内部收益率(交互式)
  4. udf mysql 重启_lib_mysqludf_json导致mysql重启原因分析
  5. 青少年创新大赛python考点_青少年编程热门竞赛专题 | 全国中小学信息技术创新与实践大赛指南!...
  6. Excel实用操作技巧
  7. 微信小程序AP配网局域网通信
  8. java epson指令集_EPSON机械手 SPEL+语言指令集
  9. 安装的客户端程序被360安全卫士当成病毒
  10. python爬虫实战 获取豆瓣排名前250的电影信息--基于正则表达式