何时在Tensorboard中使用writer.flush()

oha*_*had 7 tensorflow tensorboard

在这个最小的示例中,Tensorboard在执行期间不显示我的摘要,除非我使用writer.flush():

from time import sleep
import tensorflow as tf
import numpy as np


x = tf.placeholder("float", [None, 2])

mean = tf.reduce_mean(x)
tf.scalar_summary("mean", mean)

init = tf.initialize_all_variables()

merged = tf.merge_all_summaries()

with tf.Session() as sess:
    sess.run(init)

    summary_writer = tf.train.SummaryWriter('/var/tmp/tf_log', graph=sess.graph)

    x_iter = np.random.rand(2,2)
    for ind in range(30):
        merged_summary = sess.run(merged, feed_dict={x: x_iter})
        summary_writer.add_summary(merged_summary, ind)
        summary_writer.flush()

        x_iter += 1.0
        sleep(1)
Run Code Online (Sandbox Code Playgroud)

运行完成后,标量显示正常.
mnist_with_summaries示例在执行期间显示摘要就好了.
我什么时候需要使用flush()?这是由于缓冲区没有填充?

oha*_*had 5

看起来它确实是缓冲区。
当我添加其他一些大摘要(例如tf.audio_summary("x", x, 1))时,就不需要flush().