使用 GridSearchCV 优化 Keras 模型中的时期
Optimizing epochs in Keras model with GridSearchCV
我看过各种帖子/指南以及 Udemy 课程,建议通过 GridSearchCV 优化用于训练 Keras 模型的时期数是个好主意。
- 当你训练一个模型 400 轮时,你也训练了 200 轮。
- 当您训练一个模型 400 个时期时,最好的时期可以是 400 个时期中的任何一个。
也就是说,如果您使用 GridSearchCV 训练模型,该方法不会考虑到这一点,它只会在比较不同模型时考虑最后一个时期。当您对 GridSearchCV 进行 200 和 400 轮训练时,它会训练 200 轮模型,然后从头开始训练 400 轮。
因此,正如我所看到的,使用 GridSearchCV 来优化你的纪元数:
- 训练 "repeated"、"useless" 轮。
- 尽管有可用信息,但实际上并未找到最佳时期数。
我的问题是:
- 意识到时代 运行 的方法不是更有意义吗?为什么有人会在实践中使用所描述的方法?
- 如果所描述的方法不好,而我想以更优化的方式进行这种搜索,有什么 "standard" 方法可以做到吗?也许提前停止?如果我们正在优化多个超参数怎么办?提前停止 + GridSearchCV?
谢谢。
查看 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。
我看过各种帖子/指南以及 Udemy 课程,建议通过 GridSearchCV 优化用于训练 Keras 模型的时期数是个好主意。
- 当你训练一个模型 400 轮时,你也训练了 200 轮。
- 当您训练一个模型 400 个时期时,最好的时期可以是 400 个时期中的任何一个。
也就是说,如果您使用 GridSearchCV 训练模型,该方法不会考虑到这一点,它只会在比较不同模型时考虑最后一个时期。当您对 GridSearchCV 进行 200 和 400 轮训练时,它会训练 200 轮模型,然后从头开始训练 400 轮。
因此,正如我所看到的,使用 GridSearchCV 来优化你的纪元数:
- 训练 "repeated"、"useless" 轮。
- 尽管有可用信息,但实际上并未找到最佳时期数。
我的问题是:
- 意识到时代 运行 的方法不是更有意义吗?为什么有人会在实践中使用所描述的方法?
- 如果所描述的方法不好,而我想以更优化的方式进行这种搜索,有什么 "standard" 方法可以做到吗?也许提前停止?如果我们正在优化多个超参数怎么办?提前停止 + GridSearchCV?
谢谢。
查看 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。