Python 加载先前训练模型时的奇异损耗波动

Python 加载先前训练模型时的奇异损耗波动,python,deep-learning,pytorch,loss,Python,Deep Learning,Pytorch,Loss,我现在正在使用Pytork进行深入学习 我以前训练过一个模型,并保存了参数。培训结束前的损失值约为0.003~0.006 但是,当我用相同的训练数据加载相同的模型时,损失值首先波动到大约0.5 然后,在大约10次迭代中,损耗值迅速降低到约0.01,现在逐渐降低 有人知道为什么会发生这种情况吗?因为我正在加载相同的模型/训练数据。我希望损失值的起始值与上次训练结束时的水平相似。恢复训练时,不仅要加载网络权重,还要加载优化器状态。为此,您可以使用火炬。保存: torch.save({

我现在正在使用Pytork进行深入学习

我以前训练过一个模型,并保存了参数。培训结束前的损失值约为
0.003~0.006

但是,当我用相同的训练数据加载相同的模型时,损失值首先波动到大约
0.5

然后,在大约10次迭代中,损耗值迅速降低到约
0.01
,现在逐渐降低


有人知道为什么会发生这种情况吗?因为我正在加载相同的模型/训练数据。我希望损失值的起始值与上次训练结束时的水平相似。

恢复训练时,不仅要加载网络权重,还要加载优化器状态。为此,您可以使用
火炬。保存

torch.save({
            'epoch': epoch,
            'model_state_dict': model.state_dict(),
            'optimizer_state_dict': optimizer.state_dict(),
            'loss': loss,
            ...
            }, PATH)
然后,对于恢复培训:

model = TheModelClass(*args, **kwargs)
model.train()
optimizer = TheOptimizerClass(*args, **kwargs)

checkpoint = torch.load(PATH)
model.load_state_dict(checkpoint['model_state_dict'])
optimizer.load_state_dict(checkpoint['optimizer_state_dict'])
epoch = checkpoint['epoch']
loss = checkpoint['loss']
如果不保存优化器状态,则会丢失重要信息,如当前学习速率、动量等。这可能是问题的原因

参考:

在保存模型时,您到底保存了什么?您是否也保存了优化器的状态?谢谢。似乎我没有正确保存以前的超参数。现在问题解决了。