我正在尝试使用Tensorboard来显示我学习的网络进度。 我正在训练一个自动编码器,所以我发送了输入图像,然后自动编码器处理了输入图像后的图像。
(这有点过于简化,我实际上做的更多,所以请提供一个通用的解决方案)
我正在使用feed_dict
输入图片。这些图像已经使用ImageNet的均值和标准进行了标准化。所以我的TF图获得了这些标准化的图像。
为了让我的图像可见,我必须将它们弄清楚,所以这就是我所做的:
def tensor_to_img_op(tensor):
with tf.variable_scope("",reuse=True):
t = tensor*tf.convert_to_tensor([0.229, 0.224, 0.225]) + tf.convert_to_tensor([0.485, 0.456, 0.406])
return tf.clip_by_value(t,0,1)
然后,为了能够将它们发送到图像摘要,我将上述函数创建的op
调用到我的每个张量中,如下所示:
tf.summary.image('tensorA',tensor_to_img_op(tensorA),max_outputs=1)
tf.summary.image('tensorB',tensor_to_img_op(tensorB),max_outputs=1)
tf.summary.image('tensorC',tensor_to_img_op(tensorC),max_outputs=1)
tf.summary.image('tensorD',tensor_to_img_op(tensorD),max_outputs=1)
这种方法的问题是创建了4个操作,只有1个操作就足够了。
检查图表显示为真:
对我而言,从逻辑上讲,它看起来不是正确的解决方案,它的操作相同,但适用于不同的张量。
实现我想要的最多张力流解决方案是什么?
答案 0 :(得分:0)
您可以只使用一次该功能,并输入由张量{A ... D}组装的4D张量[N,W,H,D]。您可能必须确保在第一维上正确地播放乘法和加法,但我相信它们通常应遵循numpy规则here。
tf.summary.image('tensor',tensor_to_img_op(tensorD),max_outputs=N)
因为summary.image可以处理4D张量。