在tf.layers.conv2d中可视化滤波器权重

7

我正在使用TensorFlow V1.0中的tf.layers.conv2d进行卷积操作。

以下是一个示例:

conv1 = tf.layers.conv2d(batch_images, filters=96,
                                     kernel_size=7,
                                     strides=2,
                                     activation=tf.nn.relu,
                                     kernel_initializer=tf.contrib.layers.xavier_initializer_conv2d(uniform=False),
                                     bias_initializer=tf.contrib.layers.xavier_initializer(uniform=False),
                                     kernel_regularizer=tf.nn.l2_loss,
                                     bias_regularizer=tf.nn.l2_loss,
                                     name='conv1')

我会尝试按以下方式收集过滤器权重:-
l1weights = tf.get_collection(tf.GraphKeys.WEIGHTS, 'conv1')

然而,即使网络正在接受训练,当我在会话中评估l1weights时,我得到了[]

我该如何提取滤波器权重并使用 tf.summary.image进行可视化呢?


尝试将 tf.GraphKeys.WEIGHTS 更改为 GraphKeys.TRAINABLE_VARIABLES。 - Steven
我尝试过了,但是没有成功,输出的结果还是[] - Ujjwal
你解决了这个问题吗?我也遇到了同样的问题。 - LKM
2个回答

10

我使用以下方法成功获取了权重:

conv1 = tf.layers.conv2d(
    inputs=input_layer,
    filters=32,
    kernel_size=[5, 5],
    padding="same",
    activation=tf.nn.relu, name='conv1')

kernel = tf.get_collection(tf.GraphKeys.VARIABLES, 'conv1/kernel')[0]
bias = tf.get_collection(tf.GraphKeys.VARIABLES, 'conv1/bias')[0]

希望这可以帮到您。


看起来不错,但我遇到了错误 tensorflow.python.framework.errors_impl.InvalidArgumentError: Tensor must be 4-D with last dim 1, 3, or 4, not [3,3,1,64] [[Node: conv1_2 = ImageSummary[T=DT_FLOAT, bad_color=Tensor<type: uint8 shape: [4] values: 255 0 0...>, max_images=3, _device="/job:localhost/replica:0/task:0/cpu:0"](conv1_2/tag, conv1/kernel/read)]] 在灰度图像上使用了64个3x3的滤波器。有什么想法吗? - rodrigo-silveira
2
这是因为tf.summary.image期望一个形式为[images,height,width,channel]的张量。您可以使用以下代码转置维度:kernel_transposed=tf.transpose(kernel,[3,0,1,2]),然后在摘要中使用它。tf.summary.image('kernel',kernel_transposed) - user2118915

0

我建议使用基于类的层API,在tf.contrib.keras.layers.Conv2D中,它将变量公开为层对象的成员。

此外,请确保在训练模型的同一会话中获取变量,否则您将收到未初始化变量错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接