UnicodeDecodeError: ' utf-8 '编解码器无法解码字节0x2:无效的起始字节



你知道我如何在PyTorch 1.9中解决这个问题吗?

File "main.py", line 138, in main
checkpoint = torch.load(args.resume)
File "/scratch3/venv/fashcomp/lib/python3.8/site-packages/torch/serialization.py", line 608, in load
return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
File "/scratch3/venv/fashcomp/lib/python3.8/site-packages/torch/serialization.py", line 787, in _legacy_load
result = unpickler.load()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbe in position 2: invalid start byte

我:

$ pip freeze
h5py==3.3.0
joblib==1.0.1
numpy==1.21.2
Pillow==8.3.1
scikit-learn==0.24.2
scipy==1.7.1
sklearn==0.0
threadpoolctl==2.2.0
torch==1.9.0
torchaudio==0.9.0
torchvision==0.10.0
typing-extensions==3.10.0.0

你可以试试这样做吗:

>>> torch.load('model.pt', encoding='ascii')  # or latin1, or other encoding

默认情况下,我们将字节字符串解码为utf-8。这是为了避免一个常见的错误情况UnicodeDecodeError: 'ascii' codec不能解码字节0x…在Python 3中加载由Python 2保存的文件时。如果此默认值不正确,您可以使用额外的encoding关键字参数来指定这些对象应该如何加载,例如,encoding='latin1'使用latin1编码将它们解码为字符串,而encoding='bytes'将它们保留为字节数组,可以稍后使用byte_array.decode(…)进行解码。

读这个,第二个音符。

最新更新