【问题标题】:Determining number of epochs for model fitting in Keras在 Keras 中确定模型拟合的时期数
【发布时间】:2017-12-14 17:59:14
【问题描述】:

我正在尝试自动确定 Keras 自动编码器何时收敛。例如,查看“让我们尽可能构建最简单的自动编码器”下的 link。 epoch 的数量被硬编码为 50(当损失值收敛时)。但是,如果您不知道数字是 50,您将如何使用 Keras 进行编码?你会继续打电话给fit()吗?

【问题讨论】:

    标签: machine-learning neural-network deep-learning keras autoencoder


    【解决方案1】:

    这个问题实际上非常广泛和困难。关于如何设置 epoch 的数量有很多技巧:

    • 提前停止-在这种情况下,您将 epoch 的数量设置为非常高的数字,并且当对下一个 epoch 的改进不令人满意时,您会关闭训练。在 Keras 中,您有一个名为 EarlyStopping 的特殊对象,它可以为您完成这项工作。
    • 模型检查点 - 在这里您再次设置了非常多的 epoch,您只需保存最好的模型 w.r.t。到一个选择的指标。再一次,你有一个特殊的callback 用于这种情况。

    当然,还有其他场景,例如当您在贝叶斯超参数设置中选择此选项时,使用强化学习来查找停止时间或更复杂的场景,但这些方法更难,通常不会带来任何改进。

    可以肯定的是,重新启动 fit 方法可能会导致意外行为,因为模型的许多内部状态被重置,这可能会导致不稳定。对于这种情况,我强烈建议您使用train_on_batch,它不会重置模型状态,并且可以实现许多花哨的训练场景。

    【讨论】:

    • 好答案!但使用早停时要小心。有时模型可能会经历一个鞍点,在这个鞍点中模型正在慢慢变得更好,但实际上在它之前会有巨大的损失减少。但是,当您的损失变化不大并且您的准确性不高时,就会出现这种情况。我通常会训练多个模型并设置检查点,这是您提到的第二个选项。
    猜你喜欢
    • 2020-05-12
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多