gpt4 book ai didi

tensorflow - 在 tensorflow 中可视化卷积层的输出

转载 作者:行者123 更新时间:2023-12-03 08:29:52 26 4
gpt4 key购买 nike

我正在尝试使用函数 tf.image_summary 可视化 tensorflow 中卷积层的输出.我已经在其他情况下成功地使用了它(例如,可视化输入图像),但是在此处正确地 reshape 输出时遇到了一些困难。我有以下转换层:

img_size = 256
x_image = tf.reshape(x, [-1,img_size, img_size,1], "sketch_image")

W_conv1 = weight_variable([5, 5, 1, 32])
b_conv1 = bias_variable([32])

h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)

所以 h_conv1 的输出形状为 [-1, img_size, img_size, 32] .只需使用 tf.image_summary("first_conv", tf.reshape(h_conv1, [-1, img_size, img_size, 1]))不考虑 32 个不同的内核,所以我基本上是在这里切片不同的特征图。

如何正确 reshape 它们?或者我可以使用另一个辅助函数来将此输出包含在摘要中吗?

最佳答案

我不知道辅助函数,但如果您想查看所有过滤器,您可以将它们打包到一张图像中,并使用 tf.transpose 的一些奇特用途。

因此,如果您的张量为 images x ix x iy x channels

>>> V = tf.Variable()
>>> print V.get_shape()

TensorShape([Dimension(-1), Dimension(256), Dimension(256), Dimension(32)])

所以在这个例子中 ix = 256 , iy=256 , channels=32
首先切掉 1 个图像,并删除 image 维度

V = tf.slice(V,(0,0,0,0),(1,-1,-1,-1)) #V[0,...]
V = tf.reshape(V,(iy,ix,channels))

接下来在图像周围添加几个零填充像素

ix += 4
iy += 4
V = tf.image.resize_image_with_crop_or_pad(image, iy, ix)

然后 reshape ,以便您拥有 4x8 channel 而不是 32 个 channel ,我们将它们称为 cy=4cx=8

V = tf.reshape(V,(iy,ix,cy,cx)) 

现在是棘手的部分。 tf 似乎以 C 顺序返回结果,numpy 的默认值。

当前顺序,如果展平,将列出第一个像素的所有 channel (迭代 cxcy ),然后列出第二个像素的 channel (递增 ix )。在递增到下一行( ix)之前遍历像素行( iy)。

我们想要将图像布置在网格中的顺序。
因此,在沿着 channel 行 ( ix) 前进之前,您会遍历图像的一行 ( cx),当您到达 channel 行的末尾时,您会跳到图像中的下一行 ( iy),并且当您运行时out 或图像中的行递增到下一行 channel ( cy )。所以:

V = tf.transpose(V,(2,0,3,1)) #cy,iy,cx,ix

我个人更喜欢 np.einsum 用于花哨的转置,以提高可读性,但它不在 tf yet 中。

newtensor = np.einsum('yxYX->YyXx',oldtensor)

无论如何,现在像素的顺序正确,我们可以安全地将其展平为 2d 张量:

# image_summary needs 4d input
V = tf.reshape(V,(1,cy*iy,cx*ix,1))

尝试 tf.image_summary ,你应该得到一个小图像网格。

下面是按照此处的所有步骤操作后得到的图像。

enter image description here

关于tensorflow - 在 tensorflow 中可视化卷积层的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33802336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com