PyTorch:学习率调度程序

dol*_*dnh 4 python machine-learning pytorch learning-rate

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

optimizer = torch.optim.Adam(optim_params,betas=(args.momentum, args.beta), weight_decay=args.weight_decay)
Run Code Online (Sandbox Code Playgroud)

我已经编写了以下调度程序:

scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=100, gamma=0.9)
Run Code Online (Sandbox Code Playgroud)

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

optimizer.zero_grad()
scheduler.step()
optimizer.step()
Run Code Online (Sandbox Code Playgroud)

Szy*_*zke 5

由于1.3行为已更改,因此请特别查看发行版此问题

在此版本之前,您应该step在之前安排调度程序optimizer,而IMO是不合理的。有一些来回(实际上它打破了向后兼容性和国际海事组织这不是一个好主意,打破它这种小小的不便),但目前应该步骤scheduler之后optimizer

optimizer.zero_grad()
optimizer.step()
scheduler.step()
Run Code Online (Sandbox Code Playgroud)