Tensorboard简介
Tensorboard是Tensorflow的可视化工具,通过tf程序输出的日志文件来可视化程序的运行状态。下面的代码完成了Tensorboard日志输出的功能。
import tensorflow as tf
input1 = tf.constant([1.0,2.0,3.0],name='input1')
input2 = tf.Variable(tf.random_uniform([3]),name='input2')
output = tf.add_n([input1,input2],name='add')
#生成一个写日志文件的writer,并将计算图写入日志中
writer = tf.summary.FileWriter('./tensorboard',tf.get_default_graph())
writer.close()
然后在命令行中输入tensorboard --logdir tensorboard
即可打开网页(使用中报错,通过这种方法解决)
其中右上角下拉菜单中有其他选项的信息,对应着每一类信息的可视化结果。
TensorFlow计算图可视化
命名空间与Tensorboard图上节点
在Tensorboard的默认视图中,同一个命名空间下的所有节点会被缩略成一个节点,只有顶层命名空间的节点才会被显示。因此可以通过tf.variable_scope
或tf.name_scope
来定义命名空间进一步简化可视化图。
tf.variable_scope与tf.name_scope的不同之处:
使用tf.Variable
会受tf.name_scope的影响,但是tf.get_variable
则不会受tf.name_scope的影响
import tensorflow as tf
with tf.variable_scope('input1'):
input1 = tf.constant([1.0,2.0,3.0],name='input1')
with tf.variable_scope('input2'):
input2 = tf.Variable(tf.random_uniform([3]),name='input2')
output = tf.add_n([input1,input2],name='add')
#生成一个写日志文件的writer,并将计算图写入日志中
writer = tf.summary.FileWriter('./tensorboard',tf.get_default_graph())
writer.close()
生成的tensorboard可视化图如下图,此时图上就没有显示初始化过程:
下面是之前构建的用于训练mnist的全连接神经网络,增加几个变量的命名空间,然后对其进行tensorboard可视化:
import tensorflow as tf
import os
from tensorflow.examples.tutorials.mnist import input_data
# 定义神经网络结构相关的参数
INPUT_NODE = 784
OUTPUT_NODE = 10
LAYER1_NODE = 500
# 定义函数创建或者加载变量,并生成正则化损失加入损失集合
def get_weight_variable(shape, regularizer):
weights = tf.get_variable('weights', shape, initializer=tf.truncated_normal_initializer(stddev=0.1))
if regularizer != None:
tf.add_to_collection('losses', regularizer(weights))
return weights
# 定义神经网络的前向传播过程
def inference(input_tensor, regularizer):
with tf.variable_scope('layer1'):
weights = get_weight_variable([INPUT_NODE, LAYER1_NODE], regularizer)
biases = tf.get_variable('biases', [LAYER1_NODE], initializer=tf