Pytorch 关于加载模型后恢复训练的问题

Pytorch 关于加载模型后恢复训练的问题,pytorch,Pytorch,经过24小时的培训后,培训过程通过torch.save保存模型文件。进程退出时出现断电或其他问题。通常,我们可以加载模型并从最后一步开始继续训练 为什么我们不加载优化器(Adam等)的状态,是否有必要?是的,您可以从最后一步加载模型,并从该步骤重新训练它 如果只想将其用于推理,则将模型的状态保存为 torch.save(model, PATH) 并将其加载为 model = torch.load(PATH) model.eval() 但是,出于您的考虑,您还需要保存优化器状态dict。为此,

经过24小时的培训后,培训过程通过
torch.save
保存模型文件。进程退出时出现断电或其他问题。通常,我们可以加载模型并从最后一步开始继续训练


为什么我们不加载优化器(Adam等)的状态,是否有必要?

是的,您可以从最后一步加载模型,并从该步骤重新训练它

如果只想将其用于推理,则将模型的状态保存为

torch.save(model, PATH)
并将其加载为

model = torch.load(PATH)
model.eval()
但是,出于您的考虑,您还需要保存优化器状态dict。为此,您需要将其另存为

torch.save({
            'epoch': epoch,
            'model_state_dict': model.state_dict(),
            'optimizer_state_dict': optimizer.state_dict(),
            'loss': loss,
            ...
            }, PATH)
并加载模型以供进一步培训,如下所示:

model = TheModelClass(*args, **kwargs)
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']

model.eval()
# - or -
model.train()

有必要保存优化器状态字典,因为它包含随着模型训练而更新的缓冲区和参数。

是的,您可以从最后一步加载模型,并从该步骤重新训练它

如果只想将其用于推理,则将模型的状态保存为

torch.save(model, PATH)
并将其加载为

model = torch.load(PATH)
model.eval()
但是,出于您的考虑,您还需要保存优化器状态dict。为此,您需要将其另存为

torch.save({
            'epoch': epoch,
            'model_state_dict': model.state_dict(),
            'optimizer_state_dict': optimizer.state_dict(),
            'loss': loss,
            ...
            }, PATH)
并加载模型以供进一步培训,如下所示:

model = TheModelClass(*args, **kwargs)
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']

model.eval()
# - or -
model.train()

有必要保存优化器状态字典,因为它包含随着模型训练而更新的缓冲区和参数。

在某些情况下,有必要加载优化器的状态,例如正在使用学习率调度器的情况


在这种特定情况下,优化器的学习速率将重新调整到其处于保存状态的点。

在某些情况下,有必要加载优化器的状态,例如正在使用学习速率调度器的情况

在这种特殊情况下,优化器的学习速率将重新调整到保存状态