Machine learning 加载Pyrotch模型,测试精度下降

Machine learning 加载Pyrotch模型,测试精度下降,machine-learning,pytorch,Machine Learning,Pytorch,我有一个PyTorch模型,它的测试准确率约为95%-97%。我使用torch.save(my_model.state_dict(),PATH)保存它,但每当我尝试使用my_model.load_state_dict(torch.load(PATH))重新加载它时,我都会尝试使用test_fn(my_model)在相同的数据上测试它,测试精度会下降到0.06%左右。我正在尝试遵循建议的序列化语义() 无论我是否使用我的_model.eval(),都会发生这种情况(尽管通过default,我不会将

我有一个PyTorch模型,它的测试准确率约为95%-97%。我使用torch.save(my_model.state_dict(),PATH)保存它,但每当我尝试使用
my_model.load_state_dict(torch.load(PATH))
重新加载它时,我都会尝试使用
test_fn(my_model)
在相同的数据上测试它,测试精度会下降到0.06%左右。我正在尝试遵循建议的序列化语义()

无论我是否使用我的_model.eval(),都会发生这种情况(尽管通过default,我不会将其用于培训或测试)。我需要多走一步吗

在代码中,这看起来像:

my_model = GraphConv(w2i, p2i, l2i, r2i, s2i, words, pos, lems, 512, 512, 3) ## Initialise model & params
my_model.cuda()
loss_function = nn.NLLLoss()
optimizer = optim.Adam(my_model.parameters(), lr=0.001)

for epoch in range(15):
    ...   ### Apply training steps
    print(test_fn(my_model))  ### Will be over 95%
    torch.save(my_model.state_dict(), PATH)

...
my_model2 = GraphConv(w2i, p2i, l2i, r2i, s2i, words, pos, lems, 512, 512, 3) ## Initialise new model
my_model2.load_state_dict(torch.load('PATH'))
print(test_fn(my_model2))  ### Is about 0.06%

您确定要在数据中应用相同的预处理步骤吗?请与我们分享有关您的过程的更多详细信息。在计算精度(两种情况下)时,是否使用
model.eval()
标志?你为什么不直接用
net=torch.load(checkpoint)
加载网络?你能分享一下你的代码吗?我已经编辑了我的原始问题,加入了一些代码。我也有同样的问题。我在训练模型时验证了数据预处理是相同的。尽管如此,精确度还是有所下降。有什么想法吗?