python的joblib,joblib.dump()
在python2中加载python3训练和保存的模型时出错:
-237 clf=joblib。加载( clf 300 _ all。模型’)
238 pred_y=clf.predict_proba(X)
/usr/local/anaconda 2/lib/python 2.7/site-packages/sk learn/externals/joblib/numpy _ pickle。负载中的比重(文件名,mmap_mode)
576返回负载兼容性(fobj)
577
- 578 obj=_unpickle(fobj,filename,mmap_mode)
579
580返回对象
/usr/local/anaconda 2/lib/python 2.7/site-packages/sk learn/externals/joblib/numpy _ pickle。pyc in _ un pickle(fobj,文件名,mmap_mode)
经过查阅资料:
跨大蟒版本的joblib.dump()和joblib.load()
跨大蟒版本的兼容性
不完全支持跨大蟒版本的joblib泡菜兼容性。注意,对于一组非常有限的对象来说,用python 2保存泡菜并用python 3加载它时,这似乎是可行的,但是强烈建议不要依赖它。
如果在大蟒版本之间切换,需要为每个大蟒版本保存不同的joblib泡菜.
以下是一些例子或例外:
用python 2保存joblib泡菜,尝试用python 3加载它:
回溯(最近一次呼叫):
文件/home/les teve/dev/joblib/joblib/numpy _ pickle。py ,第453行,加载中
obj=unpickler.load()
文件/home/les teve/minicon da3/lib/python 3.4/pickle。py ,第1038行,在加载中
分派[键[0]](自己)
load_binstring中的文件"/home/les teve/minicon da3/lib/python 3.4/pickle。py”,第1176行
追加(self ._decode_string(data))
文件/home/les teve/minicon da3/lib/python 3.4/pickle。py ,第1158行,输入解码字符串
返回值。解码(自编码、自错误)
回溯(最近一次呼叫):
文件""中的第一行
文件/home/les teve/dev/joblib/joblib/numpy _ pickle。py ,第462行,加载中
引发new_exc
用python 3保存joblib泡菜,尝试用python 2加载:
回溯(最近一次呼叫):
文件""中的第一行
文件 joblib/numpy_pickle.py ,第453行,加载中
obj=unpickler.load()
文件/home/les teve/mini conda 3/envs/py27/lib/python 2.7/pickle。py ,第858行,加载中
派遣[钥匙](自己)
负载_原型中的文件/home/les teve/mini conda 3/envs/py27/lib/python 2.7/pickle。py ,第886行尊敬的秋天,不支持的泡菜协议:%d % proto
=================================================================================================================================================
不完全支持跨大蟒版本的joblib泡菜的兼容性。请注意,对于一组非常有限的对象,当使用python 2保存泡菜并使用python 3加载它时,这可能会起作用,但强烈建议不要依赖它。
如果要在大蟒版本之间切换,则需要为每个大蟒版本保存不同的joblib泡菜。
==================================================================================================================================================
另外:不同大蟒版本的pickle.dump()和pickle.load()是可以相互转换和支持的
在Python 3中,应该使用较低的协议号来编写腌制的数据Python 3.0引入了一个编号为3的新协议(并将其用作默认协议),因此切换回Python 2可以读取的值2。
检查泡菜。转储中的协议参数。
泡菜.转储(你的对象,你的文件,协议=2)
文件中没有协议参数,因为泡菜可以从文件中确定协议。
泡菜使用不同的协议将你的数据转换成二进制流。
在python 2中,有3种不同的协议(0,1,2),缺省值是0。
在python 3中有5种不同的协议(0,1,2,3,4),缺省值是3。
为了能够在python 2中加载数据,您必须在python 3中指定低于3的协议。调用泡菜。转储时,可以指定草案参数
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。