Python Tensorflow-可视化预训练网络的学习过滤器

Python Tensorflow-可视化预训练网络的学习过滤器,python,tensorflow,neural-network,visualization,tensorboard,Python,Tensorflow,Neural Network,Visualization,Tensorboard,我目前正试图用python中的tensorflow来可视化我的CNN所学的过滤器。 在培训新网络时,我发现许多版本使用mnist数据集,但无法将其应用到我的应用程序中。 我使用自定义数据集训练了一个存储在磁盘上的估计器对象。该模型包含以下层: conv1 = tf.layers.conv2d(inputs=input_layer, filters=32, kernel_size=[5, 5], padding="same", activation=tf.nn.sigmoid) 并且只想在单个图

我目前正试图用python中的tensorflow来可视化我的CNN所学的过滤器。 在培训新网络时,我发现许多版本使用mnist数据集,但无法将其应用到我的应用程序中。 我使用自定义数据集训练了一个存储在磁盘上的估计器对象。该模型包含以下层:

conv1 = tf.layers.conv2d(inputs=input_layer, filters=32, kernel_size=[5, 5], padding="same", activation=tf.nn.sigmoid)
并且只想在单个图片上以尺寸(28,28,3)显示预测。 在tensorboard中,该层简单地称为“conv2d”,而其他层则称为“conv2d_2”,依此类推,它基本上与默认MNIST网络具有相同的结构,只是使用了sigmoid函数

我不知道如何实现这一点——我曾想过获得权重和偏差,并根据步幅和过滤器大小重新计算每一层,但我已经无法获得权重,我认为有一个更简单的解决方案

我目前正试图用python中的tensorflow来可视化我的CNN所学的过滤器

我想你的意思是可视化特定层的激活?如果是这样的话,您只需要为想要的图像运行该层的张量,如下所示:

import matplotlib.pyplot as plt

# Model definition
...
conv1 = tf.layers.conv2d(inputs=input_layer, filters=32, kernel_size=[5, 5], padding="same", activation=tf.nn.sigmoid)
...

# Getting activations
acts = sess.run(conv1, {input_layer: your_image})

# Visualizing every filters
for i in range(acts.shape[3]):
  plt.imshow(acts[:,:,:,i].squeeze())
  plt.show()
如果您使用的是Estimator,您可以在模型中使用tf.summary.image()直接可视化激活的演变情况。\u fn:

# In model_fn
...
conv1 = tf.layers.conv2d(inputs=input_layer, filters=32, kernel_size=[5, 5], padding="same", activation=tf.nn.sigmoid)
acts_filters = tf.unstack(conv1, axis=3)
for i, filter in enumerate(acts_filters):
    tf.summary.image('filter' + str(i), tf.expand_dims(filter, axis=3))

欢迎来到堆栈溢出!这个问题做得很好-很高兴看到第一次提问者提出了这样一个精巧的问题。:-)谢谢,但是我在哪里/如何导入我的模型本身,以及经过训练的权重?在使用我的网络时,我通常使用行
estim=tf.estimator.estimator(model_fn=model…,model_dir=“…”)
,然后指定我要预测一些东西,例如,很抱歉再次询问,但我不知道如何进一步使用tf.summary.image。我在我的模型中添加了你的第二块代码,它终止时没有错误,但我不知道如何从这些张量中得到任何东西,谷歌也无法帮助我。感谢您的耐心。您只需要使用以下命令运行tensorboard,例如:tensorboard--logdir/,然后转到图像选项卡。我似乎没有图像选项卡,因为我可能需要将summary.images添加到编写器或类似的东西中,但同样,我无法实现在该问题上找到的任何结果。Tensorflow只显示标量、图形和投影仪。当我单击右侧下拉菜单中的“图像”时,它会显示没有图像,因为我可能忘记将它们写入事件文件,或者它找不到我的事件文件。Estimator会自动将任何摘要添加到事件文件中。你又试过训练了吗?