【问题标题】:Runtime Error while Saving a PyTorch Model: "File /path/to/be/saved Cannot Be Opened"保存 PyTorch 模型时出现运行时错误:\“无法打开文件 /path/to/be/saved\”
【发布时间】:2023-01-31 03:35:46
【问题描述】:

我使用 PyTorch 在 CIFAR-10 上运行 CNN 模型,并使用 the official PyTorch tutorial 保存一个通用检查点。

训练和测试完成后,我将最后一个纪元传递给这个 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')

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

> 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.**

你认为问题是什么?请让我知道是否需要添加任何其他详细信息。我正在使用 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')

但是由于我想加载并继续训练保存的模型,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')

【问题讨论】:

  • /home/cc/research/AdderNet/pretrained目录是否存在?
  • 路径有效。如果它存在,你是什么意思?不过,我没有任何名为minionn.pt 的文件。它不应该自己创建它吗?
  • 具体这个软件我不太了解,但总的来说,应该是目录本身已经存在了。所以我会重复我的问题:那个目录是否已经存在?
  • 是的是的,该目录存在。
  • 该目录是否可由正在执行该程序的任何用户写入?

标签: python pytorch


【解决方案1】:

在尝试保存我的手电筒模型时,我也遇到了同样的错误。在 this tutorial that you have linkedtorch使用的版本是1.13.1+cu116。尝试使用相同的版本,我相信它应该可以解决您的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 2016-11-26
    • 2021-10-08
    相关资源
    最近更新 更多