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

Determining number of epochs for model fitting in Keras

我正在尝试自动确定 Keras 自动编码器何时收敛。比如看这个link下"Let's build the simplest autoencoder possible."的epochs数硬编码为50(损失值收敛时)。但是,如果您不知道数字是 50,您将如何使用 Keras 对此进行编码?你会一直打电话给 fit() 吗?

这个问题其实宽得离谱而且难得离谱。关于如何设置epochs的数量有很多技巧:

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

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

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