使用 GridSearchCV 优化 Keras 模型中的时期

Optimizing epochs in Keras model with GridSearchCV

我看过各种帖子/指南以及 Udemy 课程,建议通过 GridSearchCV 优化用于训练 Keras 模型的时期数是个好主意。

  1. 当你训练一个模型 400 轮时,你也训练了 200 轮。
  2. 当您训练一个模型 400 个时期时,最好的时期可以是 400 个时期中的任何一个。

也就是说,如果您使用 GridSearchCV 训练模型,该方法不会考虑到这一点,它只会在比较不同模型时考虑最后一个时期。当您对 GridSearchCV 进行 200 和 400 轮训练时,它会训练 200 轮模型,然后从头开始训练 400 轮。

因此,正如我所看到的,使用 GridSearchCV 来优化你的纪元数:

  1. 训练 "repeated"、"useless" 轮。
  2. 尽管有可用信息,但实际上并未找到最佳时期数。

我的问题是:

谢谢。

查看 EarlyStopping Keras 回调。 当参数化指标在多个时期内没有改善时,提前停止回调会停止训练,并且总是 returns 最大化所选指标的模型。另外根据您的用例 patience kwarg 应该是有用的。

在此处查看文档:https://keras.io/callbacks/

要找到最佳超参数,请检查 Keras 调谐器:https://github.com/keras-team/keras-tuner

您甚至可以结合使用 Keras Tuner 和提前停止回调,这样您就可以同时优化多个超参数。

定义调谐器搜索功能时,可以添加回调:

import tensorflow as tf

tuner.search(
  train_data,
  validation_data=validation_data,
  epochs=number_of_epochs,
  callbacks=[tf.keras.callbacks.EarlyStopping(patience=1)]
)

使用 Keras 调谐器,您有不同的选项来选择调谐器。

库文档有例子,或者你也可以看这个tutorial on how to use Keras Tuner for hyperparameter tuning