无法使用joblib保存scikit学习模型?

时间:2020-01-03 05:11:13

标签: python tensorflow scikit-learn lstm

我有结合了tensorflow和scikit-learn的Ensemble模型。我想将此Ensemble模型另存为一个框,以输入数据并生成输出。我的代码如下

def model_base_LSTM(***):
   ***
model = model_base_LSTM(***)
ensem_model = BaggingRegressor(base_estimator=model, n_estimators=15)
ensem_model.fit(x_train, y_train)
bag_mod_pred = ensem_model.predict(x_test_bag)

from joblib import dump, load
dump(ensem_model, 'LSTM_Ensemble.joblib')

TypeError:无法腌制_thread._local对象

那么,如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用Scikit-Learn保存TensorFlow(甚至PyTorch)模型,但前提是您使用Neuraxle及其保存机制。

Neuraxle是Scikit-Learn的扩展,使其与所有深度学习库更加兼容。

通过使用Neuraxle-TensorFlowNeuraxle-PyTorch来完成技巧。

为什么呢?

使用Neuraxle-TensorFlow或Neuraxle-PyTorch之一将为您提供一个保护程序,以使您的内容得以正确序列化。您需要对其进行正确的序列化,以确保在保存或并行化事物等等时,scikit-learn与您的深度学习框架之间具有兼容性。您可以阅读Neuraxle如何使用储户here解决此问题。

代码示例

这是一个完整的项目示例,从A到Z,其中TensorFlow is used with Neuraxle as if it was used with Scikit-Learn

这是另一个实际的示例,其中TensorFlow is used within a scikit-learn-like pipeline