保存 PyTorch 模型时出现运行时错误:“无法打开文件 /path/to/be/saved”

Al *_*l A 6 python pytorch

我使用 PyTorch 在 CIFAR-10 上运行 CNN 模型,并使用官方 PyTorch 教程来保存常规检查点。

训练和测试完成后,我将最后一个时期传递给该save_model函数。

def save_model(epoch):
    torch.save({
        'epoch': epoch+1,
        'model_state_dict': net.state_dict(),
        'optimizer_state_dict': optimizer.state_dict(),
        }, '/home/cc/research/AdderNet/pretrained/minionn.pt')
Run Code Online (Sandbox Code Playgroud)

但是,我在尝试保存模型时不断收到以下错误:

> Train - Epoch 1, Batch: 1, Loss: 2.302385
> Test Avg. Loss: 0.020081, Accuracy: 0.269100
> Train - Epoch 2, Batch: 1, Loss: 2.019350
> Test Avg. Loss: 0.018918, Accuracy: 0.324800
> Traceback (most recent call last):
> File "/home/cc/research/AdderNet/main.py", line 119, in <module>
> main()
> File "/home/cc/research/AdderNet/main.py", line 115, in main
> save_model(epoch)
> File "/home/cc/research/AdderNet/main.py", line 105, in save_model
> torch.save({
> File "/home/cc/anaconda3/envs/torch/lib/python3.10/site-packages/torch/serialization.py", line 422, in save
> with _open_zipfile_writer(f) as opened_zipfile:
> File "/home/cc/anaconda3/envs/torch/lib/python3.10/site-packages/torch/serialization.py", line 309, in _open_zipfile_writer
> return container(name_or_buffer)
> File "/home/cc/anaconda3/envs/torch/lib/python3.10/site-packages/torch/serialization.py", line 287, in __init__
> super(_open_zipfile_writer_file, self).__init__(torch._C.PyTorchFileWriter(str(name)))
> **RuntimeError: File /home/cc/research/AdderNet/pretrained/minionn.pt cannot be opened.**
Run Code Online (Sandbox Code Playgroud)

您认为问题出在哪里?如果需要添加任何其他详细信息,请告诉我。我正在使用 VsCode 在远程服务器上运行我的代码。我还使用用 conda 创建的虚拟环境。venv 中安装的 python 版本是,Python 3.10.8但 conda 的基本 python 版本是Python 3.9.13,我系统的默认 python 版本(当我停用 conda 时)是Python 3.8.10。操作系统也是Ubuntu20.04

更新:

我可以使用以下命令保存模型:

torch.save(model, '/home/cc/research/AdderNet/pretrained/FILE_NAME')
Run Code Online (Sandbox Code Playgroud)

但由于我想加载并继续训练保存的模型,PyTorch 指示使用这种方法,这显然对我不起作用:

torch.save({
            'epoch': EPOCH,
            'model_state_dict': net.state_dict(),
            'optimizer_state_dict': optimizer.state_dict(),
            'loss': LOSS,
            }, '/home/cc/research/AdderNet/pretrained/FILE_NAME.pt')
Run Code Online (Sandbox Code Playgroud)

小智 -1

在尝试保存我的火炬模型时,我也遇到了同样的错误。在 您链接的本教程中,使用的版本torch1.13.1+cu116. 尝试使用相同的版本,我相信它应该可以解决您的错误。