【问题标题】:Optimizing epochs in Keras model with GridSearchCV使用 GridSearchCV 优化 Keras 模型中的时期
【发布时间】:2019-12-12 00:19:40
【问题描述】:

我看过各种帖子/指南以及 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?

谢谢。

【问题讨论】:

    标签: python optimization keras neural-network gridsearchcv


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-11-18
        • 2020-10-04
        • 2020-08-25
        • 2023-01-24
        • 2019-02-17
        • 2020-06-19
        • 2019-12-21
        • 1970-01-01
        • 2021-06-21
        相关资源
        最近更新 更多