我必须在一个时间限制为 7 天的集群上运行我的模型,如果计算成本超过 7 天,该作业将在集群上结束。因此,训练将不会完成以获得用于预测的保存模型。
我正在从 scikit-learn 训练一些分类器模型(例如 SVC、KNeighborsClassifier 等),想知道是否有任何函数或库可以在特定持续时间之间对模型进行快照,然后继续从已停止的点开始训练(类似于深度学习中应用的内容)?
谢谢
最佳答案
一般来说,在 scikit-learn 中不可能在拟合过程中拍摄快照。图书馆仅提供有限的persistence features 。可以增量训练某些模型,但不能训练其他模型。对于可能的模型,您将必须编写不同数量的样板代码。
incremental learning下列出的型号为此目的有一个 warm_start
属性和/或一个 .partial_fit()
方法。您可以在批量数据的循环中调用 partial_fit
。此外,您需要编写代码来存储和检索训练进度以及部分训练的模型(有关模型持久性的更多信息,请参阅 this question)。
一些模型(尤其是集成模型,如随机森林)原则上可以合并。因此,您不必逐步训练一个模型,而是在循环中训练多个独立的模型实例,然后将它们合并。然而,据我所知,scikit-learn API 不支持这种合并。因此,虽然可以做到这一点,但需要破解私有(private)属性并深入了解模型的数学和实现。
关于python - 如何在单次训练期间保存和快照机器学习模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57471418/