Pytorch中torch.optim.lr_scheduler.MultiStepLR

1.官方介绍

  torch.optim.lr_scheduler.MultiStepLR表示按需求有外部设置调整学习率。具体参数如下:

  • o p t i m i z e r ( O p t i m i z e r ) optimizer(Optimizer) optimizer(Optimizer):优化器
  • m i l e s t o n e s ( l i s t ) milestones(list) milestones(list) l r lr lr改变时的epoch数目
  • g a m m a ( f l o a t ) gamma(float) gamma(float):学习率调整倍数,默认为 0.1 0.1 0.1,即下降 10 10 10
  • l a s t _ e p o c h ( l i s t ) last\_epoch(list) last_epoch(list):从last_start开始后记录了多少个 e p o c h epoch epoch,默认为 − 1 -1 1

2.代码实例

  假定优化器使用的学习率为 l r = 0.06 lr = 0.06 lr=0.06,在第40轮时候变成 l r = 0.006 lr=0.006 lr=0.006,在第 100 100 100轮的时候变成 l r = 0.0006 lr=0.0006 lr=0.0006,具体的代码实例如下所示:

>>> scheduler = MultiStepLR(optimizer, milestones=[40,100], gamma=0.1)
>>> for epoch in range(100):
>>>     train(...)
>>>     validate(...)
>>>     scheduler.step()

  在指定的 e p o c h epoch epoch值,如 [ 5 , 20 , 25 , 80 ] [5,20,25,80] [5,20,25,80]处对学习率进行衰减完整的代码展示如下所示:

model = AlexNet(num_classes=2)
optimizer = optim.SGD(params = model.parameters(), lr=0.01)
scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[5,20,25,80], gamma=0.1)

plt.figure()
x = list(range(100))
y = []

for epoch in range(100):
    scheduler.step()
    lr = scheduler.get_lr()
    print(epoch, scheduler.get_lr()[0])
    y.append(scheduler.get_lr()[0])
plt.xlabel("epoch")
plt.ylabel("learning rate")
plt.plot(x,y)

  • 10
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

道2024

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

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

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

打赏作者

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

抵扣说明:

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

余额充值