PyTorch:如何在任何给定时刻更改优化器的学习速率(无LR计划)

pat*_*_ai 20 python optimization neural-network deep-learning pytorch

PyTorch是否有可能在训练过程中动态改变优化器的学习率(我不想事先定义学习率计划)?

所以,假设我有一个优化器:

optim = torch.optim.SGD(model.parameters(), lr=0.01)
Run Code Online (Sandbox Code Playgroud)

现在由于我在训练期间进行的一些测试,我意识到我的学习率太高,所以我想改变它来说0.001.似乎没有一种方法optim.set_lr(0.001)但是有一些方法可以做到这一点吗?

pat*_*_ai 45

因此学习率存储在optim.param_groups[i]['lr']. optim.param_groups是可以具有不同学习率的不同权重组的列表.因此,简单地做:

for g in optim.param_groups:
    g['lr'] = 0.001
Run Code Online (Sandbox Code Playgroud)

会做的.

  • 在 2020 年使用[此自动更新程序](https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate) (2认同)
  • 我尝试使用这个,但我没有改变 lr。必须进行这样的更改: for i in range(len(optimizer.param_groups)): optimizationr.param_groups[i]['lr'] = new_lr (2认同)

Mic*_*ael 6

而不是@patapouf_ai's answer中的循环,您可以直接通过:

optim.param_groups[0]['lr'] = 0.001
Run Code Online (Sandbox Code Playgroud)

干杯

  • 仅当您有单个参数组时这才有效。(这可能是大多数情况下的情况。) (2认同)