我目前有一组复杂的操作,这些操作可以迭代地创建图像并将它们提供给要使用的进程。这是非常庞大而复杂的图的一部分。我想确保正确创建了这些图像。
通常用于调试的tf.Print
用于创建无操作,具有打印到屏幕的副作用。
有没有
a)我可以以某种方式将非常大的中间张量存储到文件中吗?
b)专门将中间张量图像存储到文件(或屏幕)的某种方法?
很显然,如果我有一个评估的数字张量,这是没有问题的,因为我可以使用matplotlib的imshow
对其进行可视化,但是作为符号张量,如何执行它并不是很明显。
我可以保存一堆中间张量以使用sess.run
进行评估,但是我的代码是通过结构方式来构造的,因此很难手动访问并收集所有这些张量。
答案 0 :(得分:0)
在张量流中保存具有空间相关性(例如张量的图像)的张量的最佳方法是通过tf.summary.image
。查看tensorboard tutorial,了解它们如何组合在一起,但症结所在如下:
tf.summary.image("img", img)
merged = tf.summary.merge_all()
train_writer = tf.summary.FileWriter('logs', sess.graph)
for i in range(num_iters):
summary = sess.run(merged)
train_writer.add_summary(summary, i)
然后启动张量板:
tensorboard --logdir logs
然后在浏览器中转到localhost:6006
以查看摘要。
这种方法的缺点是除非您明确指定(例如tf.summary.image("img", img[...,10])
),否则您对所看到的切片没有很好的控制力