我正在使用Python3.7和PyTorch 1.0开发人脸识别系统。我想使用here中所述的VGGFace2 Resnet50预训练模型作为特征提取器。我已经下载了模型和权重。 正如项目自述文件所述,我运行以下代码:
MainModel = imp.load_source('MainModel', 'resnet50_128_pytorch.py')
model = torch.load('resnet50_128_pytorch.pth')
第一行按预期执行,但在第二行中得到
'ascii'编解码器无法解码位置1124中的字节0xc3:序数不在 范围(128)
我在Stackoverflow和Google中进行了搜索,我发现这可能与使用Python2保存该模型以及从Python3加载产生了问题。有什么办法可以解决这个问题?
谢谢。
答案 0 :(得分:0)
我找到了目前看起来可行的解决方案。它基本上使用latin1编码来改变泡菜的负荷。
from functools import partial
import pickle
pickle.load = partial(pickle.load, encoding="latin1")
pickle.Unpickler = partial(pickle.Unpickler, encoding="latin1")
MainModel = imp.load_source('MainModel', 'resnet50_ft_pytorch.py')
model = torch.load('resnet50_ft_pytorch.pth', map_location=lambda storage, loc: storage, pickle_module=pickle)