PyTorch:保存优化器状态的目的是什么?

问题描述 投票:0回答:2

PyTorch 能够保存和加载优化器的状态。 PyTorch 教程中显示了一个示例。我目前只是保存和加载模型状态,而不是优化器。那么,除了不必记住学习率等优化器参数之外,保存和加载优化器状态还有什么意义呢?优化器状态包含什么?

pytorch
2个回答
13
投票

如果您想稍后恢复模型训练,您应该保存优化器状态。特别是如果 Adam 是你的优化者。 Adam 是一种自适应学习率方法,这意味着它计算各种参数的个体学习率。

如果您只想使用保存的模型进行推理,则不需要。

但是,最佳实践是同时保存模型状态和优化器状态。 如果您想稍后绘制它们,您还可以保存损失历史记录和其他运行指标。

我会这样做,

torch.save({ 'epoch': epochs, 'model_state_dict': model.state_dict(), 'optimizer_state_dict': optimizer.state_dict(), 'train_loss_history': loss_history, }, PATH)
    

3
投票
我相信保存优化器的状态是日志记录和可重复性的一个重要方面。它存储了有关优化器设置的许多详细信息;包括使用的优化器类型、学习率、权重衰减、使用的

scheduler类型(我个人认为这非常有用)等。此外,当将预先训练的权重加载到当前的权重中时,可以以类似的方式使用它通过 .load_state_dict()

 建立模型,以便您可以使用相同的方法将一些存储的优化器设置/配置传递到当前优化器中:
optimizer.load_state_dict(some_good_optimizer.state_dict())

© www.soinside.com 2019 - 2024. All rights reserved.