PyTorch - RuntimeError: [在 inline_container.cc:209 处强制失败]。未找到文件:archive/data.pkl

And*_*ndy 6 python pickle pytorch

问题

我正在尝试使用 PyTorch 加载文件,但错误状态archive/data.pkl不存在。

代码

import torch
cachefile = 'cacheddata.pth'
torch.load(cachefile)
Run Code Online (Sandbox Code Playgroud)

输出

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-4-8edf1f27a4bd> in <module>
      1 import torch
      2 cachefile = 'cacheddata.pth'
----> 3 torch.load(cachefile)

~/opt/anaconda3/envs/matching/lib/python3.8/site-packages/torch/serialization.py in load(f, map_location, pickle_module, **pickle_load_args)
    582                     opened_file.seek(orig_position)
    583                     return torch.jit.load(opened_file)
--> 584                 return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)
    585         return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
    586 

~/opt/anaconda3/envs/matching/lib/python3.8/site-packages/torch/serialization.py in _load(zip_file, map_location, pickle_module, **pickle_load_args)
    837 
    838     # Load the data (which may in turn use `persistent_load` to load tensors)
--> 839     data_file = io.BytesIO(zip_file.get_record('data.pkl'))
    840     unpickler = pickle_module.Unpickler(data_file, **pickle_load_args)
    841     unpickler.persistent_load = persistent_load

RuntimeError: [enforce fail at inline_container.cc:209] . file not found: archive/data.pkl
Run Code Online (Sandbox Code Playgroud)

假设

我猜这与泡菜有关,来自文档

这个保存/加载过程使用最直观的语法并且涉及最少的代码。以这种方式保存模型将使用 Python 的 pickle 模块保存整个模块。这种方法的缺点是序列化的数据绑定到特定的类和保存模型时使用的确切目录结构。这样做的原因是 pickle 不保存模型类本身。相反,它保存包含类的文件的路径,该路径在加载时使用。因此,您的代码在其他项目中使用或在重构后可能会以各种方式中断。

版本

  • PyTorch 版本:1.6.0
  • Python版本:3.8.0

LSg*_*geo 14

就我而言,我的磁盘驱动器已满。清理一些空间并重试,如有必要,删除任何部分文件。

  • 其实,这是我的问题! (4认同)
  • 这非常有帮助,从错误消息来看根本原因并不明显是硬盘驱动器已满。 (3认同)

And*_*ndy 5

原来文件不知何故损坏了。再次生成后,它加载没有问题。