You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch保存通用检查点报错:无法打开指定文件

问题

我用PyTorch在CIFAR-10数据集上训练CNN模型,尝试按照PyTorch推荐的通用检查点方式保存训练状态,但持续报错;但直接保存整个模型的方式可以正常工作。

相关代码

保存检查点的函数:

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')

测试可行的保存方式:

torch.save(model, '/home/cc/research/AdderNet/pretrained/FILE_NAME')

报错信息

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

环境信息

  • 系统:Ubuntu20.04远程服务器
  • 开发工具:VSCode远程连接
  • Python环境:conda虚拟环境(Python3.10.8),conda基础环境3.9.13,系统默认Python3.8.10

解决方案

1. 检查目标目录的存在性与权限

首先确认保存路径中的pretrained目录是否存在,若不存在则创建:

mkdir -p /home/cc/research/AdderNet/pretrained/

然后检查目录的读写权限,确保当前用户拥有写入权限:

ls -ld /home/cc/research/AdderNet/pretrained/

如果权限不足,执行以下命令修改:

chmod 755 /home/cc/research/AdderNet/pretrained/

2. 排查文件路径与锁定问题

  • 先尝试简化保存路径,比如保存到当前工作目录测试,排除路径解析问题:
    torch.save(checkpoint, './minionn_test.pt')
    
  • 若目标文件已存在,可能被其他进程锁定,先删除旧文件再尝试保存:
    rm -f /home/cc/research/AdderNet/pretrained/minionn.pt
    

3. 验证检查点字典的有效性

先将检查点数据存入临时变量,再执行保存,排除字典构造时的潜在问题:

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

同时确保net和optimizer对象在保存时处于有效状态,未被意外释放。

4. 检查系统与环境兼容性

  • 确认磁盘空间是否充足:
    df -h
    
  • 验证conda虚拟环境中的PyTorch版本是否正常,必要时重新安装:
    # CPU版本示例,GPU版请替换为对应命令
    conda install pytorch torchvision torchaudio cpuonly -c pytorch
    

内容的提问来源于stack exchange,提问作者Al A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:45:29