在发送到Tensorboard之前将op应用于图像

时间:2018-01-14 00:17:49

标签: tensorflow tensorboard

我正在尝试使用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个操作就足够了。

检查图表显示为真:

enter image description here

对我而言,从逻辑上讲,它看起来不是正确的解决方案,它的操作相同,但适用于不同的张量。

实现我想要的最多张力流解决方案是什么?

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张量。