如何将学习率调度程序与以下优化程序一起使用?
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()
答案 0 :(得分:5)
由于1.3
的行为已更改,请参见releases和this issue especially。
在此版本之前,您应该在step
之前使用optimizer
调度程序,这在IMO中是不合理的。来回有一些冲突(实际上,它破坏了向后兼容性,而IMO则因为这么小的不便而破坏它不是一个好主意),但是目前您应该在scheduler
之后执行optimizer
。
optimizer.zero_grad()
optimizer.step()
scheduler.step()