PyTorch 1.0在Python3.7中加载VGGFace2权重

时间:2019-03-23 09:34:08

标签: python python-3.x python-2.7 pytorch

我正在使用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加载产生了问题。有什么办法可以解决这个问题?

谢谢。

1 个答案:

答案 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)