【发布时间】:2026-02-03 06:45:01
【问题描述】:
问题
我正在尝试使用 PyTorch 加载文件,但错误状态 archive/data.pkl 不存在。
代码
import torch
cachefile = 'cacheddata.pth'
torch.load(cachefile)
输出
---------------------------------------------------------------------------
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
假设
我猜这与泡菜有关,来自docs:
此保存/加载过程使用最直观的语法并涉及 最少的代码。以这种方式保存模型将保存整个 使用 Python 的 pickle 模块的模块。这种方法的缺点 是序列化的数据绑定到特定的类和 保存模型时使用的确切目录结构。的原因 这是因为 pickle 不保存模型类本身。相当, 它保存包含该类的文件的路径,该路径在 加载时间。因此,您的代码可能会以各种方式中断 用于其他项目或重构后。
版本
- PyTorch 版本:1.6.0
- Python 版本:3.8.0
【问题讨论】: