从亚当开始



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

我能够使用模型和优化器state_dicts保存/加载快照。没问题。

我的问题是,一旦我重新开始训练,如何再次设置 Adam 的学习率?我应该重新启动 adam 新鲜而不是使用state_dict还是应该使用optimizer.param_groups[0][‘lr’] = lr使用加载的优化器state_dict调整学习率?

例如 我用lr = 1e-6训练我的网络 5 个 epoch,保存模型和优化器state_dict。 我现在从纪元 6 重新开始,但我需要lr = 1e-7。最好的方法是什么?

谢谢!

在这里查看 PyTorch 的torch.optim.lr_scheduler代码,我可以看到它们设置了优化器的参数。因此,这将是最好的办法。我可以看到的确切位置是在类_LRScheduler的函数step(在上面的链接中(。

你可以通过以下方式做同样的事情

optimizer.param_groups[0]['lr'] = lr

正如你自己提到的。

进一步查看调度程序代码,我找到了正确的方法如下:

def get_lr(gamma, optimizer):
return [group['lr'] * gamma
for group in optimizer.param_groups]
for param_group, lr in zip(optimizer.param_groups, get_lr(gamma, optimizer)):
param_group['lr'] = lr

相关内容

  • 没有找到相关文章

最新更新