为什么Keras要为一次.fit运行编写多个tensorboard日志?

为什么Keras要为一次.fit运行编写多个tensorboard日志?,keras,tensorboard,google-cloud-ml,Keras,Tensorboard,Google Cloud Ml,我在Google Cloud上使用Keras和tensorflow后端运行一个convnet模型,使用tensorboard回调为训练历史保存tfevents日志。当我监视学习曲线时,我注意到在训练的中途(学习曲线处于平稳状态),一个新的tfevents日志被保存到磁盘。TensorBoard的学习曲线图显示,训练被重置为历元#1,val#u损失也被重置为划痕 这真的很奇怪。有人知道这里发生了什么吗?在什么情况下,Keras会自动重新启动培训并保存新的tfevents日志?事实证明,这个问题只发

我在Google Cloud上使用Keras和tensorflow后端运行一个convnet模型,使用
tensorboard
回调为训练历史保存tfevents日志。当我监视学习曲线时,我注意到在训练的中途(学习曲线处于平稳状态),一个新的tfevents日志被保存到磁盘。TensorBoard的学习曲线图显示,训练被重置为历元#1,
val#u损失
也被重置为划痕


这真的很奇怪。有人知道这里发生了什么吗?在什么情况下,Keras会自动重新启动培训并保存新的tfevents日志?

事实证明,这个问题只发生在我在Google Cloud上运行代码时,而不是在我的本地计算机上。谷歌工程师确认了实际原因, 是谷歌的云维护,不是Keras!Google Compute Engine(GCE)实例偶尔会在没有任何警告或事先通知的情况下关闭以进行维护(在回答此问题时也没有记录)。维护将导致培训实例从头开始重新启动,从而生成新的tfevents日志并重置所有以前的进度


解决方案是经常保存检查点,加载以前的模型(如果存在),并在重新启动时恢复培训。请注意,使用GCE时,必须使用Keras中的自定义Lambda回调函数将检查点保存到Google云存储(GCS),否则您的检查点将随着关机而消失

向我们展示您的fit调用和任何自定义回调的实现。事实证明,问题是由Google Cloud ML引起的,而不是Keras!然后请回答您的问题,说明其他用户如何避免此问题。