Pytorch问题:关闭并重新打开Spyder IDE之后,torch.load无法从文件正确加载保存的模型

问题描述

我遵循了最基本的代码过程来保存和加载神经网络模型参数,并且它运行良好。训练网络后,使用标准的torch.save(model.state_dict(),file)方法将其保存到包中指定文件夹中的指定文件中;当我需要重新运行程序以评估而不是训练时,它使用标准的model.load_state_dict(torch.load(file))方法加载。但是,一旦我关闭Spyder IDE应用程序并重新打开IDE和项目,torch.load就不会生成所需的已保存模型。请注意,我正在通过输入输入并检查输出来测试模型的“正确性”。我不确定这是Spyder还是Pytorch的问题,尽管我正在学习Spyder,因为加载确实有效。

简而言之,如果我在Spyder打开时连续运行该程序,则该程序可以运行,但是一旦Spyder关闭并重新打开,它就会停止正常运行。有人知道吗?

解决方法

这可能是由于在运行IDE时知道程序的状态,但在关闭状态时丢失了该状态,导致无法知道如何加载模型(因为IDE不知道您使用哪种模型)正在使用)。要解决此问题,请尝试定义一个新模型并通过load将参数加载到其中,如下所示:

my_model = MyModelClass(parameters).to(device)
checkpoint = torch.load(path)
my_model.load_state_dict(checkpoint)

通过这种方式,IDE知道您的模型是什么类,并且可以正确地对待它。