1.官方介绍

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

  • optimizer(Optimizer)optimizer(Optimizer)optimizer(Optimizer):优化器
  • milestones(list)milestones(list)milestones(list)lrlrlr改变时的epoch数目
  • gamma(float)gamma(float)gamma(float):学习率调整倍数,默认为0.10.10.1,即下降101010
  • last_epoch(list)last\_epoch(list)last_epoch(list):从last_start开始后记录了多少个epochepochepoch,默认为−1-11

2.代码实例

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

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

  在指定的epochepochepoch值,如[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)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐