0

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

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

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

因此,正如我所见,使用 GridSearchCV 来优化您的时代数:

  1. 训练“重复”、“无用”的时期。
  2. 尽管信息可用,但实际上并未找到最佳时期数。

我的问题是:

  • 意识到正在运行的时代的方法不是更有意义吗?有什么理由为什么有人会在实践中使用所描述的方法?
  • 如果所描述的方法是一种不好的方法,并且我想以更优化的方式进行这种搜索,那么是否有任何“标准”方法呢?也许提前停止?如果我们要优化多个超参数怎么办?提前停止 + GridSearchCV?

谢谢你。

4

2 回答 2

1

查看 EarlyStopping Keras 回调。当参数化指标在 epoch 上没有改善时,提前停止回调会停止训练,并始终返回最大化所选指标的模型。此外,根据您的用例耐心 kwarg 应该是有用的。

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

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

于 2019-08-03T22:08:07.927 回答
0

您甚至可以结合使用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 Tuner,您可以选择不同的调谐器。

库文档有示例,或者您也可以查看有关如何使用 Keras Tuner 进行超参数调整的教程

于 2020-01-31T16:01:34.400 回答