我正在运行来自vehicle-prediction的一些演示代码。说到models
目录下的模型,我可以在 Python2 中加载这个模型model_2000_car_100_iter_v.pkl
,但我的集成环境是 Python3。因此,当我运行代码以使用 Python3 加载模型时joblib.load()
,会引发错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 1024: ordinal not in range(128)
和
raise new_exc
ValueError: You may be trying to read with python 3 a joblib pickle generated with python 2. This is not feature supported by joblib.
我试图弄清楚这个是指泡菜,因为 joblib 是指泡菜。所以泡菜文档说encoding = 'latin1'
可以避免这个问题,但没有成功。而且我还尝试了“iso-8859-1”编码,也失败了。
import pickle
picklefile=open('model_2000_car_100_iter_v.pkl','rb')
data=pickle.load(picklefile,encoding='iso-8859-1') # or 'latin1'
我可以看到 pickle 允许用户在 Python3 中保存模型,并使用protocol
参数在 Python2 中加载它,但是我该如何反过来呢?有没有办法使用joblib在不同的python版本中加载模型?