加载的 pytorch 模型给出的结果与最初训练的模型不同

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

我训练了一个 Pytorch 模型,保存了测试错误,并使用

torch.save(model, 'model.pt')

保存了完整的模型

我加载模型在另一个数据集上进行测试,发现误差较高,所以我在与之前完全相同的数据集上进行测试,发现结果不同:

这里,预测值没有太大差异,这告诉我模型是正确的,但有些不同。

第一个区别是模型最初是在 GPU 上使用 nn.DataParallel 进行训练的,在加载后进行测试时,我在 CPU 上对其进行评估。

model = torch.load('model.pt')
model = model.module # To remove the DataParallel module
model.eval()
with torch.no_grad():
    x = test_loader.dataset.tensors[0].cuda()
    pred = model(x)
    mae_loss = torch.nn.L1Loss(reduction='mean')
    mae = mae_loss(pred, y)

什么可能导致模型评估出现这种差异?先谢谢你了

python neural-network pytorch
1个回答
0
投票

也许您在加载后忘记将 pytorch 模型设置为 eval 模式(即 model.eval())?这会在运行推理之前将 dropout 和批量归一化层更改为评估模式。否则它会生成不一致的值,例如您的情况。

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