11.学习率调整策略;TensorBoard简介与安装


本课程来自深度之眼deepshare.net,部分截图来自课程视频。

为什么要调整学习率?

学习率调整

梯度下降: w i + 1 = w i − L R ∗ g ( w i ) w_{i+1}=w_i-LR*g(w_i) wi+1=wiLRg(wi)
学习率(learning rate)控制更新的步伐
和打高尔夫球一样,离洞远的时候要大力击打,离洞近,需要小力击打
如果学习率较大,则会出现下图中红色部分的结果,loss下降到一个点后就不再往下了,而是在某个区间震荡。
在这里插入图片描述

pytorch的六种学习率调整策略

class_LRScheduler

所有六种学习率调整策略都继承自该类。
主要属性:
·optimizer:关联的优化器,才能修改里面的学习率
·last_epoch:记录epoch数
·base_Irs:记录初始学习率
主要方法:
·step():更新下一个epoch的学习率,这个函数要放在epoch循环中,不要放错放到iteration里面。
·get_Ir():虚函数,计算下一个epoch的学习率

1.StepLR

功能:等间隔调整学习率
主要参数:
·step_size:调整间隔数,多个epoch调整一次学习率
·gamma:调整系数
调整方式: L r = L r ∗ g a m m a Lr=Lr*gamma Lr=Lrgamma

2.MultiStepLR

功能:按给定间隔调整学习率
主要参数:
·milestones:设定调整时刻数,例如:milestones=[50,125,160]
·gamma:调整系数
调整方式:Ir=Ir*gamma
在这里插入图片描述

3.ExponentialLR

功能:按指数衰减调整学习率
主要参数:
·gamma:指数的底
调整方式: L r = L r ∗ g a m m a ∗ ∗ e p o c h Lr=Lr*gamma**epoch Lr=Lrgammaepoch
这个有点想动量加权平均的调整方式。
在这里插入图片描述

4.CosineAnnealingLR

功能:余弦周期调整学习率
主要参数:
·T_max:下降周期,需要多少个epoch从cos的最大变到最小,下面图是T_max=50
·eta_min:学习率下限,通常为0
调整方式: η t = η m i n + 1 2 ( η m a x − η m i n ) ( 1 + c o s ( T c u r T m a x π ) ) \eta_t=\eta_{min}+\frac{1}{2}(\eta_{max}-\eta_{min})(1+cos(\frac{T_{cur}}{T_{max}}\pi)) ηt=ηmin+21(ηmaxηmin)(1+cos(TmaxTcurπ))
在这里插入图片描述

5.ReduceLRonPlateau(很实用)

功能:监控指标,当指标不再变化则调整
主要参数:
·mode:min/max两种模式
·factor:调整系数
·patience:“耐心”,接受几次不变化
·cooldown:“冷却时间”,停止监控一段时间
·verbose:是否打印日志
·min_lr:学习率下限
·eps:学习率衰减最小值

loss_value=0.5
accuray=0.9
factor=0.1
mode="min"
patience=10
cooldown=10
min_lr=1e-4
verbose=True

输出解析:由于loss是常数,所以loss是不会变化的(这里的mode是min,也就是loss不下降就进行调整。),经过10个epoch后,到达了patience设置的10次,于是在第11个epoch进行学习率调整,按LR=LR*factor调。
然后经过cooldown,10个epoch,然后再经过patience,10个epoch,到达第32个epoch,再次进行学习率调整,
同理到达53个epoch再次调整,这次调整后达到了min_lr=1e-4,停止调整。
在这里插入图片描述

6.LambdaLR(最灵活)

功能:自定义调整策略
主要参数:
·Ir_lambda:function or list
可以对多个参数组的lr进行不同调整策略:

lr_init=0.1
weights_1=torch.randn((6,3,5,5))
weights_2=torch.ones((5,5))
optimizer=optim.SGD([{'param':[ weights_1]},
{'params':[ weights_2]}],lr=lr_init)
lambda1=lambda epoch:0.1**(epoch //20)
lambda2=lambda epoch:0.95 ** epoch 
scheduler=torch.optim.lr_scheduler.LambdaLR(optimizer,Lrlambda=[ lambda1,lambda2])

学习率调整小结

1.有序调整:Step、MultiStep、Exponential和CosineAnnealing
2.自适应调整:ReduceLROnPleateau
3.自定义调整:Lambda
学习率初始化:
1.设置较小数:0.01、0.001、0.0001
2.搜索最大学习率:《Cyclical Learning Rates for Training Neural Networks》
在这里插入图片描述

在这里插入图片描述

TensorBoard简介与安装

TensorBoard:TensorFlow中强大的可视化工具
支持标量、图像、文本、音频、视频和Eembedding等多种数据可视化
在这里插入图片描述
TensorBoard机制是按以下三个步骤:
1.python脚本:记录可视化的数据
2.硬盘:event file
3.终端:tensorboard
最后可视化。
例如,先写以下脚本,然后运行(运行报错就安装相应的包)
安装注意事项
pip install tensorboard的时候会报错:
ModuleNotFoundError:No module named‘past’
通过pip install future解决

import numpy as np 
from torch.utils.tensorboard import Summarlywriter

writer=Summaryuriter(comment='test tensorboard')

for x in range(100): 

	writer. add_scalar('y=2x',x*2,x)
	writer. add_scalar('y=pow(2,x)',2**x,x) 
	
	writer. add_scalars('data/scalar_group',{"xsinx":x*np.sin(x),
	"xcosx":x*np.cos(x),
	"arctanx":np.arctan(x)},x)
writer.close()

在项目的目录下就生成event file:
在这里插入图片描述
在指定目录运行命令
在这里插入图片描述
点击链接就可以打开界面
在这里插入图片描述

TensorBoard安装

TensorBoard运行可视化

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值