【发布时间】:2018-06-26 00:17:59
【问题描述】:
官方文档声明“不建议使用pickle或cPickle来保存Keras模型。”
但是,我对酸洗 Keras 模型的需求源于使用 sklearn 的 RandomizedSearchCV(或任何其他超参数优化器)进行的超参数优化。必须将结果保存到文件中,因为这样脚本可以在分离的会话等中远程执行。
基本上,我想:
trial_search = RandomizedSearchCV( estimator=keras_model, ... )
pickle.dump( trial_search, open( "trial_search.pickle", "wb" ) )
【问题讨论】:
-
本题同样适用于Tensorflow等其他深度学习框架
-
Keras 推荐使用model.save()。 Scikitrecommends joblib。使用 RandomizedSearchCV 调整参数后,您可以使用
trial_search.best_estimator_来获得最适合的模型,然后使用 keras 推荐的方法。为什么还要保存 RandomizedSearhCV 对象? -
因为您想保存搜索的历史记录以及所有详细信息,例如,我想知道第二好的结果是什么样的以及它使用了哪些参数,追溯.
-
然后,您应该寻找保存
cv_results_属性而不是完整的 RandomizedSearchCV,这将是一个包含您需要的所有信息的字典。 -
根据定义,如果您不保存整个对象,您将丢失信息。例如,在以后的日子里,我突然想比较第 3 佳模型的权重和第 5 佳模型的权重。现在我必须重新运行这些模型,而不是
pickle.load()。我不能吗?另外,我不想附加到sklearn,因为我想在以后使用其他超参数优化器。
标签: python machine-learning keras pickle