我有一个经过训练的决策树模型,该模型是我在Google研究笔记本中创建的,并且像这样腌制:
pickle.dump(tree, open(tree_15.sav, 'wb'))
我们有一个从docker构建的在线分析项目,它创建了我用来创建模型的相同环境。 (以及其他用于其他功能的软件包。)我想在该其他项目中导入我的模型,并添加以下行:
predictive_model = pickle.load(open(self.sav_path, 'rb'), fix_imports=True, encoding='latin1')
但是我得到:
_pickle.UnpicklingError: invalid load key, '\xef'.
有趣的是,我无法在本地复制相同的错误。我使用Windows桌面(因此在本地从docker构建时遇到问题),但是每个软件包使用相同版本,.sav文件未损坏-哈希检出-等等。每次都在本地运行得很好。相同模型的先前版本也在线运行。老实说,我在这里很迷茫。
通常,gzip
的open()
不具有内置open()
的问题,所以为什么不尝试以下操作:
import gzip, pickle
with gzip.open(self.sav_path, 'rb') as f:
predictive_model = pickle.load(f, fix_imports=True, encoding='latin1')