9

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

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()
4

1 回答 1

15

由于1.3行为已更改,请参阅发行版此问题,尤其是

在这个版本之前,你应该step调度 before optimizer,这在 IMO 是不合理的。有一些来回(实际上它破坏了向后兼容性,而且 IMO 为这样一个小不便而破坏它不是一个好主意),但目前你应该scheduleroptimizer.

optimizer.zero_grad()
optimizer.step()
scheduler.step()
于 2019-11-24T11:46:36.897 回答