Я часто видел эту ошибку, и часто это происходило из-за того, что файл не закрывался должным образом после открытия. Но так как я использую встроенную функцию torch.load (), я не уверен, что я мог бы сделать по-другому.
Сначала часть сохранения:
torch.save({
'model_state_dict': agent.dqn.state_dict(),
...
'loss_history': agent.losshistory
}, modelpath)
и здесь загрузка часть, где я также получаю сообщение об ошибке:
if os.path.exists(modelpath):
checkpoint = torch.load(modelpath)
agent.dqn.load_state_dict(checkpoint['model_state_dict'])
...
agent.losshistory = checkpoint['loss_history']
и здесь ошибка:
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
Еще одна вещь, которую я хочу упомянуть, это то, что я использовал этот точный код несколько раз без проблема. Я не помню, чтобы что-нибудь изменилось, что могло вызвать ошибку.