如何使用image_summary在Tensorflow中查看来自不同批次的图像?

Ton*_*hen 10 python deep-learning tensorflow

我很好奇image_summary是如何工作的.有一个名为max_images的参数,用于控制显示的图像数量.但是,总结似乎只显示一批中的图像.如果我们使用更大的max_iamges值,我们将只查看批次中的更多图像.有没有办法可以查看每批产品中的一张图片?

mrr*_*rry 8

要从每个批处理中查看一个图像,您需要tf.image_summary()在每次运行步骤时获取操作的结果.例如,您有以下设置:

images = ...
loss = ...
optimizer = ...

train_op = optimizer.minimize(loss)
init_op = tf.initialize_all_variables()
image_summary_t = tf.image_summary(images.name, images, max_images=1)

sess = tf.Session()
summary_writer = tf.train.SummaryWriter(...)
sess.run(init_op)
Run Code Online (Sandbox Code Playgroud)

...您可以将训练循环设置为每次迭代捕获一个图像,如下所示:

for _ in range(10000):
    _, image_summary = sess.run([train_op, image_summary_t])
    summary_writer.add_summary(image_summary)
Run Code Online (Sandbox Code Playgroud)

请注意,捕获每个批次的摘要可能效率低下,您应该只定期捕获摘要以加快培训速度.

编辑:上面的代码为每个图像写了一个单独的摘要,因此您的日志将包含所有图像,但它们不会全部在TensorBoard中可视化.如果要将摘要组合在一起以可视化来自多个批次的图像,则可以执行以下操作:

combined_summary = tf.Summary()
for i in range(10000):
    _, image_summary = sess.run([train_op, image_summary_t])
    combined_summary.MergeFromString(image_summary)
    if i % 10 == 0:
        summary_writer.add_summary(combined_summary)
        combined_summary = tf.Summary()
Run Code Online (Sandbox Code Playgroud)