PyTorch torch.optim.lr_scheduler.CyclicLR

1.出处介绍

  CyclicLR循环学习率出自于论文《Cyclical Learning Rates for Training Neural Networks》;与之前的固定或者单调递减的学习率不同,这是周期性变化。有三个参数:上边界max_lr,下边界base_lr,补长stepsize。如下所示,学习率在base_lr和max_lr震荡更新。
在这里插入图片描述

2.参数介绍

  • base_lr:基础学习率
  • max_lr:学习率上限
  • step_size_up:学习率上升的步数
  • step_size_down:学习率下降的步数
  • mode:共三种模式分别为triangular,triangular2和exp_range
  • gamma:exp_range中的常量gamma**(cycle iterations)
  • scale_fn:自定义缩放策略保证所有 x ≥ 0 x\geq 0 x0的情况下 s c a l e _ f n ( x ) scale\_fn(x) scale_fn(x)的值域为 [ 0 , 1 ] [0,1] [0,1]
  • scale_mode:两种模式cycle和iterations
  • cycle_momentum:如果为True,则动量与’base_momentum’和’max_momentum之间的学习率成反比
  • base_momentum:初始动量,即每个参数组的循环中的下边界。
  • max_momentum:每个参数组的循环中的上动量边界。

3.代码实例

#设置优化器
optimizer = torch.optim.SGD(model.parameters(),lr=opt.lr,momentum=0.9)
base_lr = 2e-3
max_lr = 6e-3

#设置学习率调节方法
scheduler = torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr, max_lr, step_size_up=500, step_size_down=500, 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)

for epoch in range(opt.num_epochs):
	train(...)
	validate(...)
	scheduler.step()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

道2024

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

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

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

打赏作者

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

抵扣说明:

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

余额充值