python - 与亚当一起重新开始

标签 python conv-neural-network pytorch gradient-descent stochastic-gradient

我正在使用早期停止策略来训练我的网络。我从较高的学习率开始,根据验证损失,我需要从较早的快照重新开始训练。

我能够使用模型和优化器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/

相关文章:

python - 如何更改虚拟环境在 Ubuntu 14.04 中使用的 python 版本?

machine-learning - 无法将数据适合 3d 卷积 U-net Keras

python - 在 Pytorch 中实现 SeparableConv2D

python - 3D 语义分割任务的 Keras 预处理

python - 在 Keras fit_generator 中将 shuffle 设置为 True 时精度会降低

python - 如何在 PyTorch 中做完全连接的批量归一化?

python - 损失函数中的所有变量都必须是 pytorch 中带有 grads 的张量吗?

python - 列表字典的笛卡尔积

python - 从深度图计算视野

python - Flask SQLAlchemy order_by 关系