当前位置:   article > 正文

Pytorch中torch.optim.lr_scheduler.MultiStepLR

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()
  • 1
  • 2
  • 3
  • 4
  • 5

  在指定的 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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/328447
推荐阅读
相关标签
  

闽ICP备14008679号