我正在使用早期停止策略来训练我的网络。我从较高的学习率开始,根据验证损失,我需要从较早的快照重新开始训练。
我能够使用模型和优化器state_dicts
保存/加载快照。没问题。
我的问题是,一旦我重新开始训练,我该如何重新设置adam的学习率?我应该重新启动 adam fresh 而不是使用 state_dict
还是应该使用
optimizer.param_groups[0]['lr'] = lr
使用加载的优化器state_dict
调整学习率?
例如,
我使用 lr = 1e-6
训练网络 5 个周期,保存模型和优化器 state_dict
。
我现在从第 6 纪元重新开始,但我需要 lr = 1e-7
。最好的方法是什么?
谢谢!
最佳答案
查看 PyTorch 的 torch.optim.lr_scheduler
代码 here ,我可以看到他们设置了优化器的参数。因此,这将是最好的方法。我可以看到的确切位置是 _LRScheduler
类的 step
函数(在上面的链接中)。
您可以通过以下方式执行相同操作
optimizer.param_groups[0]['lr'] = lr
正如您自己提到的。
关于python - 与亚当一起重新开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58298711/