python-3.x - 如何使用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版本中加载模型?
解决方案
推荐阅读
- javascript - 跟踪组件内数组更改的最佳方法是什么?
- html - 如何居中引导 jumbotron
- sparql - SPARQL:将多个谓词值组合成标签数组
- python - fractions.Fraction f 字符串作为带有 __format__ 的浮点数
- c# - 绑定到业务逻辑类时如何修复 ArgumentException
- php - 请求明确给定的 IP,但使用明确给定的主机名来进行 SSL 验证?
- php - Drush 允许的内存大小为 2097152 字节已用尽
- r - r studio中的图例符号和文本间距问题
- jsp - 如何将此选中的项目发送到另一个页面上显示?JSP 伺服器
- parameters - 训练 word2vec 时出现内存错误:分层 softmax