Eval仅在训练开始时发布,训练在CloudML上结束

时间:2018-03-13 19:25:27

标签: tensorflow google-cloud-ml

使用下面的代码 - 在使用CloudML进行培训时,eval仅运行两次(开始和结束)。我希望这个评估至少每10秒钟一次。

如果我在本地运行相同的代码,则表现如预期。

eval_spec = tf.estimator.EvalSpec(                    input_fn = read_dataset(' {} / test *' .format(OUTPUT_GCS),mode = tf.estimator.ModeKeys.EVAL),                    步骤= 5,                    start_delay_secs = 2,                    throttle_secs = 10,                    出口商=出口商)

我的批量大小是64,而--scale-tier = BASIC。

1 个答案:

答案 0 :(得分:1)

我想出来了。在CloudML中运行时,底层检查点配置的覆盖方式与在Datalab中本地运行时的覆盖方式不同。

环境:  my_checkpointing_config = tf.estimator.RunConfig(save_checkpoints_secs = 1 * 60,keep_checkpoint_max = 3)

在估算师的congfig属性中解决问题。

具有讽刺意味的是,文档说明了这一点,但在两个不同的部分:

1)throttle_secs:Int。除非最近的评估至少在很多秒前开始,否则不要重新评估。当然,如果没有新的检查点可以进行评估,因此,这是最小的(link)。

2)默认情况下,Estimator根据以下计划(link)在model_dir中保存检查点:

每10分钟(600秒)写一个检查点。 在列车方法开始(第一次迭代)并完成(最终迭代)时写入检查点。 仅保留目录中最近的5个检查点。

这与执行环境的默认设置有关。