可视化第二个卷积层
visualizing 2nd convolutional layer
因此,通过 tf.summary 我将模型中的第一个卷积层可视化,形状为 [5,5,3,32],作为一组单独的图像,每个过滤器一个。所以这一层有一个 5x5 维度的过滤器,深度为 3,共有 32 个过滤器。我将这些滤镜视为 5x5 彩色 (RGB) 图像。
我想知道如何将其推广到第二个卷积层,以及第三个和更多...
第二个卷积层的形状是[5,5,32,64].
我的问题是如何将该张量转换为单独的 5x5x3 图像?
对于形状为 [5,5,3,32] 的第一个卷积层,我首先通过转置 tf.transpose(W_conv1,(3,0,1,2))
来可视化它,然后有 32 个 5x5x3 图像。
做一个 tf.transpose(W_conv2,(3,0,1,2))
会产生一个形状 [64,5,5,32]。我将如何使用那些“32 个颜色通道”? (我知道它没那么简单 :))。
高级过滤器的可视化通常是间接完成的。要可视化特定的过滤器,您需要寻找过滤器响应最多的图像。为此,您在 space 图像中执行梯度上升(而不是像训练网络时那样更改网络参数,而是更改输入图像)。
如果你玩一下下面的 Keras 代码,你会更容易理解:https://github.com/keras-team/keras/blob/master/examples/conv_filter_visualization.py
因此,通过 tf.summary 我将模型中的第一个卷积层可视化,形状为 [5,5,3,32],作为一组单独的图像,每个过滤器一个。所以这一层有一个 5x5 维度的过滤器,深度为 3,共有 32 个过滤器。我将这些滤镜视为 5x5 彩色 (RGB) 图像。
我想知道如何将其推广到第二个卷积层,以及第三个和更多...
第二个卷积层的形状是[5,5,32,64].
我的问题是如何将该张量转换为单独的 5x5x3 图像?
对于形状为 [5,5,3,32] 的第一个卷积层,我首先通过转置 tf.transpose(W_conv1,(3,0,1,2))
来可视化它,然后有 32 个 5x5x3 图像。
做一个 tf.transpose(W_conv2,(3,0,1,2))
会产生一个形状 [64,5,5,32]。我将如何使用那些“32 个颜色通道”? (我知道它没那么简单 :))。
高级过滤器的可视化通常是间接完成的。要可视化特定的过滤器,您需要寻找过滤器响应最多的图像。为此,您在 space 图像中执行梯度上升(而不是像训练网络时那样更改网络参数,而是更改输入图像)。
如果你玩一下下面的 Keras 代码,你会更容易理解:https://github.com/keras-team/keras/blob/master/examples/conv_filter_visualization.py