我很好奇 image_summary 是如何工作的。有一个名为 max_images 的参数,它控制显示多少张图像。但是,摘要似乎只显示一批中的图像。如果我们使用更大的 max_iamges 值,我们将只查看批处理中的更多图像。有没有一种方法可以让我查看例如每批处理中的一张图片?
最佳答案
要查看每批中的一张图像,您需要获取 tf.image_summary()
的结果op 每次你运行一个步骤。例如,如果您有以下设置:
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)
...您可以将训练循环设置为每次迭代捕获一张图像,如下所示:
for _ in range(10000):
_, image_summary = sess.run([train_op, image_summary_t])
summary_writer.add_summary(image_summary)
请注意,捕获每个批处理的摘要可能效率低下,您可能应该只定期捕获摘要以加快训练速度。
编辑:上面的代码为每个图像写了一个单独的摘要,因此您的日志将包含所有图像,但它们不会全部显示在 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()
关于python - Tensorflow中如何使用image_summary查看不同批处理的图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35005691/