首页 > 解决方案 > 如何使用python2中保存的python3 pkl文件导入

问题描述

我正在运行来自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版本中加载模型?

标签: python-3.xpython-2.7picklejoblibhmmlearn

解决方案


推荐阅读