PyTorch:学习率调度程序

时间:2019-11-24 11:10:00

标签: python machine-learning pytorch learning-rate

如何将学习率调度程序与以下优化程序一起使用?

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)

我不清楚是否应该执行调度程序或优化程序。我应该采取哪种顺序执行以下操作?

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

1 个答案:

答案 0 :(得分:5)

由于1.3的行为已更改,请参见releasesthis issue especially

在此版本之前,您应该在step之前使用optimizer调度程序,这在IMO中是不合理的。来回有一些冲突(实际上,它破坏了向后兼容性,而IMO则因为这么小的不便而破坏它不是一个好主意),但是目前您应该在scheduler之后执行optimizer

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