如何将带有keras回归器的scikitlearn管道保存到磁盘?

2024-04-18 11:01:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个scikit-learn pipline和kerasRegressor:

estimators = [
    ('standardize', StandardScaler()),
    ('mlp', KerasRegressor(build_fn=baseline_model, nb_epoch=5, batch_size=1000, verbose=1))
    ]
pipeline = Pipeline(estimators)

在训练了pipline之后,我尝试使用joblib保存到磁盘。。。在

^{pr2}$

但我得到一个错误:

RuntimeError: maximum recursion depth exceeded

如何将管道保存到磁盘?在


Tags: buildmodelscikitlearn磁盘fnnbestimators
1条回答
网友
1楼 · 发布于 2024-04-18 11:01:33

我与同样的问题做斗争,因为没有直接的方法来做到这一点。这是一个对我有用的方法。我把我的管道保存到两个文件中。第一个文件存储了sklearn管道的pickle对象,第二个文件用于存储Keras模型:

...
from keras.models import load_model
from sklearn.externals import joblib

...

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('estimator', KerasRegressor(build_model))
])

pipeline.fit(X_train, y_train)

# Save the Keras model first:
pipeline.named_steps['estimator'].model.save('keras_model.h5')

# This hack allows us to save the sklearn pipeline:
pipeline.named_steps['estimator'].model = None

# Finally, save the pipeline:
joblib.dump(pipeline, 'sklearn_pipeline.pkl')

del pipeline

下面是如何将模型加载回:

^{pr2}$

相关问题 更多 >