我使用Keras在Google Cloud上使用张量流后端运行一个convnet模型,使用tensorboard
回调来保存训练历史记录的tfevents日志。当我监控学习曲线时,我注意到培训的一半(学习曲线处于高原状态),一个新的tfevents日志被保存到磁盘。而TensorBoard的学习曲线图表明,训练被重置为#1纪元,val_loss
也重置为划痕。
这真的很奇怪。有谁知道这里发生了什么?在什么情况下Keras会自动重启培训并保存新的tfevents日志?
答案 0 :(得分:1)
事实证明,这个问题只发生在我在Google云上运行我的代码时,而不是在我的本地机器上。谷歌工程师确认的实际原因, 是Google的云维护,而不是Keras! Google Compute Engine(GCE)实例有时会在没有任何警告或事先通知的情况下关闭进行维护(在此答案时也没有记录)。维护将导致训练实例从头开始重新启动,从而生成新的tfevents日志并重置所有先前的进度。
解决方案是频繁保存检查点,加载以前的模型(如果存在),并在重新启动时恢复训练。请注意,使用GCE时,必须使用Keras中的自定义Lambda回调函数将检查点保存到Google云端存储(GCS),否则您的检查点将在关闭时消失。