加载.pt文件时遇_pickle.UnpicklingError: invalid load key 'v'错误求助
解决PyTorch加载.pt文件时的
_pickle.UnpicklingError: invalid load key, 'v'错误 错误复现
加载代码:
str1='Dataset/ALL_feats_cgqa.pt' m = torch.load(str1)
报错信息:
File "/home/Storage1/pythonCodeArea/train.py", line 21, in load_embeddings m = torch.load(str1) File "/home/.local/lib/python3.10/site-packages/torch/serialization.py", line 1040, in load return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args) File "/home/.local/lib/python3.10/site-packages/torch/serialization.py", line 1262, in _legacy_load magic_number = pickle_module.load(f, **pickle_load_args) _pickle.UnpicklingError: invalid load key, 'v'.
可能原因及修复方案
结合技术社区讨论,整理以下排查方向:
文件损坏或未完整获取
这是最常见的诱因。如果文件是从网络下载、跨设备传输的,中途中断、存储故障都可能导致文件残缺。
修复:重新下载/复制文件,对比本地文件与源文件的大小是否一致。可以用命令ls -lh Dataset/ALL_feats_cgqa.pt查看本地文件大小。文件格式不符合PyTorch标准
你加载的.pt文件可能并非PyTorch原生序列化格式——比如被压缩后重命名、或是其他框架导出的权重文件。
修复:- 检查文件头部魔法数:PyTorch合法.pt文件开头应为
\x80\x04(对应pickle协议4)。用hexdump -n 4 Dataset/ALL_feats_cgqa.pt查看前4字节,若输出包含76(对应ASCII字符'v'),说明格式不匹配。 - 如果文件实际是压缩包(比如.gz后缀被改名为.pt),尝试用解压方式加载:
import gzip with gzip.open(str1, 'rb') as f: m = torch.load(f)
- 检查文件头部魔法数:PyTorch合法.pt文件开头应为
PyTorch版本不兼容
保存文件时的PyTorch版本与当前加载版本差异过大,可能导致序列化协议不兼容。
修复:切换到保存文件时使用的PyTorch版本加载,或升级/降级当前版本至匹配范围。文件权限不足
程序无文件读取权限时,可能因读取不完整触发错误。
修复:执行chmod +r Dataset/ALL_feats_cgqa.pt赋予读取权限。
额外排查建议
- 换一台机器加载该文件,排除本地环境问题。
- 若文件为自行生成,检查保存阶段的代码是否异常(如保存时程序崩溃)。
内容的提问来源于stack exchange,提问作者Aleph
相关产品推荐
相关产品推荐

