PyTorch: 学习率调度器

10
如何在以下优化器中使用学习率调度器?
optimizer = torch.optim.Adam(optim_params,betas=(args.momentum, args.beta), weight_decay=args.weight_decay)

我编写了以下调度程序:

scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=100, gamma=0.9)

我不确定是应该进行调度器(scheduler)还是优化器(optimizer)。在执行以下操作时,我应该采取什么顺序?

optimizer.zero_grad()
scheduler.step()
optimizer.step()
1个回答

15

自从版本1.3开始行为发生了改变,请参阅发布说明该问题的特殊说明

在此版本之前,您应该先调用step调度器再调用optimizer,我认为这是不合理的。此事有些反复,尽管它会破坏向后兼容性,但为了这样一个小不便而破坏它并不是个好主意。但目前您应该在optimizer之后调用schedulerstep方法。

optimizer.zero_grad()
optimizer.step()
scheduler.step()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接