如何在 tensorflow 上可视化学习的过滤器

Posted

技术标签:

【中文标题】如何在 tensorflow 上可视化学习的过滤器【英文标题】:How to visualize learned filters on tensorflow 【发布时间】:2017-07-05 14:43:36 【问题描述】:

与 Caffe 框架类似,可以在 CNN 训练期间观看学习到的过滤器,并由此产生与输入图像的卷积,我想知道是否可以用 TensorFlow 做同样的事情?

可以在此链接中查看 Caffe 示例:

http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb

感谢您的帮助!

【问题讨论】:

您可以使用tensorflow debugger 工具 我想这就是我想要的。谢谢!不过tensorboard应该有这个功能。 另见How can visualize tensorflow convolution filters? How can I visualize the weights(variables) in cnn in Tensorflow?的可能重复 谢谢!这就是我要找的!谢谢! 【参考方案1】:

要在 Tensorboard 中仅查看几个 conv1 过滤器,您可以使用此代码(适用于 cifar10)

# this should be a part of the inference(images) function in cifar10.py file

# conv1
with tf.variable_scope('conv1') as scope:
  kernel = _variable_with_weight_decay('weights', shape=[5, 5, 3, 64],
                                       stddev=1e-4, wd=0.0)
  conv = tf.nn.conv2d(images, kernel, [1, 1, 1, 1], padding='SAME')
  biases = _variable_on_cpu('biases', [64], tf.constant_initializer(0.0))
  bias = tf.nn.bias_add(conv, biases)
  conv1 = tf.nn.relu(bias, name=scope.name)
  _activation_summary(conv1)

  with tf.variable_scope('visualization'):
    # scale weights to [0 1], type is still float
    x_min = tf.reduce_min(kernel)
    x_max = tf.reduce_max(kernel)
    kernel_0_to_1 = (kernel - x_min) / (x_max - x_min)

    # to tf.image_summary format [batch_size, height, width, channels]
    kernel_transposed = tf.transpose (kernel_0_to_1, [3, 0, 1, 2])

    # this will display random 3 filters from the 64 in conv1
    tf.image_summary('conv1/filters', kernel_transposed, max_images=3)

我还写了一个简单的gist 来在一个网格中显示所有 64 个 conv1 过滤器。

【讨论】:

你是否将这段代码放在了 cifar 10 脚本的“推理”函数中? 我没有,但这是个好主意 :) 我刚刚相应地更新了代码 有效!谢谢! “convert_image_dtype”出现错误,所以我将tf.image.convert_image_dtype(kernel_0_to_1, dtype=tf.uint8) 更改为kernel_0_to_255_uint8 = tf.cast(kernel_0_to_1, dtype=tf.float32) 奇怪 - 我没有任何错误。好吧,显然 Tensorboard 也可以可视化范围 [0, 1] 内的浮动图像。顺便说一句,kernel_0_to_1 已经是 float 类型,所以你的演员阵容是多余的。我更新了代码 它仅适用于 conv1。 conv2, conv3 ... 怎么样?

以上是关于如何在 tensorflow 上可视化学习的过滤器的主要内容,如果未能解决你的问题,请参考以下文章

学习TensorFlow,TensorBoard可视化网络结构和参数

Tensorflow学习笔记3:TensorBoard可视化学习

深度学习-CNN tensorflow 可视化

TensorBoard: 可视化学习

深度学习三人行(第2期)---- TensorFlow爱之再体验

TensorFlow2 入门指南 | 10 TensorBoard可视化