Tensorflow - 使用带有1.2 Estimator API的tf.summary

Dan*_*iel 11 python tensorflow

我正在尝试将一些TensorBoard日志记录添加到使用新的tf.estimator API的模型中.

我有一个钩子设置如下:

summary_hook = tf.train.SummarySaverHook(
    save_secs=2,
    output_dir=MODEL_DIR,
    summary_op=tf.summary.merge_all())

# ...

classifier.train(
    input_fn,
    steps=1000,
    hooks=[summary_hook])
Run Code Online (Sandbox Code Playgroud)

在我model_fn,我也创造了summary-

def model_fn(features, labels, mode):
    # ... model stuff, calculate the value of loss
    tf.summary.scalar("loss", loss)
    # ...
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码时,我从以下错误中得到以下错误summary_hook: Exactly one of scaffold or summary_op must be provided.这可能是因为tf.summary.merge_all()找不到任何摘要并且正在返回None,尽管tf.summary.scalar我已在声明中声明了model_fn.

任何想法为什么这不起作用?

小智 8

使用tf.train.Scaffold()并传递tf.merge_all如下

summary_hook = tf.train.SummarySaverHook(
    save_secs=2,
    output_dir=MODEL_DIR,
    scaffold=tf.train.Scaffold(summary_op=tf.summary.merge_all()))
Run Code Online (Sandbox Code Playgroud)


EXP*_*XP0 5

只是对于将来有这个问题的人来说,所选择的解决方案对我不起作用(请参阅我在所选解决方案中的评论).

实际上,使用TF 1.2 Estimator API,不需要有summary_hook.我只是tf.summary.scalar("loss", loss)在model_fn中,并运行没有summary_hook的代码.记录损失并显示在张量板中.我不确定在此之后是否更改了TF API以及类似的问题.

  • Estimator API会在培训期间自动处理摘要.但我希望在评估过程中看到相同的摘要,但这种情况不会发生. (2认同)