确定Keras中模型拟合的时期数

时间:2017-07-10 21:04:00

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

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

1 个答案:

答案 0 :(得分:6)

这个问题实际上是荒谬而广泛的。关于如何设置时期数的方法很多:

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

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

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