EOFError:用完输入,使用 torch.load()

Lev*_*vin 2 python pickle pytorch

我看到这个错误被发布了很多,通常是由于文件在打开后没有正确关闭。但由于我使用的是集成的 torch.load() 函数,我不确定我可以做些什么不同的事情。

首先是保存部分:

    torch.save({
            'model_state_dict': agent.dqn.state_dict(),
             ...
            'loss_history': agent.losshistory
            }, modelpath)
Run Code Online (Sandbox Code Playgroud)

这里是加载部分,我也收到了错误消息:

if os.path.exists(modelpath):
    checkpoint = torch.load(modelpath)
    agent.dqn.load_state_dict(checkpoint['model_state_dict'])
    ...
    agent.losshistory = checkpoint['loss_history']
Run Code Online (Sandbox Code Playgroud)

和这里的错误:

Traceback (most recent call last):
  File "c:/Users/levin/Desktop/programming/main.py", line 33, in <module>
    checkpoint = torch.load(modelpath)
  File "C:\Users\levin\AppData\Local\Programs\Python\Python37\lib\site-packages\torch\serialization.py", line 529, in load
    return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
  File "C:\Users\levin\AppData\Local\Programs\Python\Python37\lib\site-packages\torch\serialization.py", line 702, in _legacy_load
    result = unpickler.load()
EOFError: Ran out of input
Run Code Online (Sandbox Code Playgroud)

我还想提到的一件事是,我多次使用这个确切的代码没有问题。我不记得更改任何可能导致错误的内容。

小智 6

根据此线程,读取空文件时似乎会引发异常,因此请在阅读前检查文档的大小,如果未解决,请发表回复。