PyTorch 能够保存和加载优化器的状态。 PyTorch 教程中显示了一个示例。我目前只是保存和加载模型状态,而不是优化器。那么,除了不必记住学习率等优化器参数之外,保存和加载优化器状态还有什么意义呢?优化器状态包含什么?
如果您想稍后恢复模型训练,您应该保存优化器状态。特别是如果 Adam 是你的优化者。 Adam 是一种自适应学习率方法,这意味着它计算各种参数的个体学习率。
如果您只想使用保存的模型进行推理,则不需要。
但是,最佳实践是同时保存模型状态和优化器状态。 如果您想稍后绘制它们,您还可以保存损失历史记录和其他运行指标。我会这样做,
torch.save({
'epoch': epochs,
'model_state_dict': model.state_dict(),
'optimizer_state_dict': optimizer.state_dict(),
'train_loss_history': loss_history,
}, PATH)
scheduler类型(我个人认为这非常有用)等。此外,当将预先训练的权重加载到当前的权重中时,可以以类似的方式使用它通过 .load_state_dict()
建立模型,以便您可以使用相同的方法将一些存储的优化器设置/配置传递到当前优化器中:
optimizer.load_state_dict(some_good_optimizer.state_dict())
。