要可视化权重,可以使用tf.image_summary()
op将卷积过滤器(或过滤器的一部分)转换为摘要原型,使用tf.train.SummaryWriter
将其写入日志,并可视化日志使用TensorBoard 。
假设您有以下(简化)程序:
filter = tf.Variable(tf.truncated_normal([8, 8, 3]))
images = tf.placeholder(tf.float32, shape=[None, 28, 28])
conv = tf.nn.conv2d(images, filter, strides=[1, 1, 1, 1], padding="SAME")
# More ops...
loss = ...
optimizer = tf.GradientDescentOptimizer(0.01)
train_op = optimizer.minimize(loss)
filter_summary = tf.image_summary(filter)
sess = tf.Session()
summary_writer = tf.train.SummaryWriter('/tmp/logs', sess.graph_def)
for i in range(10000):
sess.run(train_op)
if i % 10 == 0:
# Log a summary every 10 steps.
summary_writer.add_summary(filter_summary, i)
完成此操作后,您可以启动TensorBoard以可视化/tmp/logs
,并且您将能够看到过滤器的可视化。
请注意,此技巧将深度为3的滤镜可视化为RGB图像(以匹配输入图像的通道)。如果您有更深的滤镜,或者将它们解释为颜色通道没有意义,则可以使用tf.split()
op在深度维度上拆分滤镜,并为每个深度生成一个图像摘要。
0
训练了cnn模型后,我想可视化权重或打印出权重,该怎么办?训练后我什至无法打印出变量。谢谢!