Tensorboard是TensorFlow自带的一个强大的可视化工具
01 功 能
这是TensorFlow在MNIST实验数据上得到Tensorboard结果(https://www.tensorflow.org/tensorboard/index.html#graphs)
02
原 理
03
with tf.name_scope('output_act'):
hidden = tf.nn.relu6(tf.matmul(reshape, output_weights[0]) + output_biases) tf.histogram_summary('output_act', hidden)
其中,
with tf.name_scope('input_cnn_filter'):
with tf.name_scope('input_weight'):
input_weights = tf.Variable(tf.truncated_normal(
[patch_size, patch_size, num_channels, depth], stddev=0.1), name='input_weight') variable_summaries(input_weights, 'input_cnn_filter/input_weight')
with tf.name_scope('input_biases'):
input_biases = tf.Variable(tf.zeros([depth]), name='input_biases') variable_summaries(input_weights, 'input_cnn_filter/input_biases')
def variable_summaries(var, name):
"""Attach a lot of summaries to a Tensor."""
with tf.name_scope('summaries'):
mean = tf.reduce_mean(var)
tf.scalar_summary('mean/' + name, mean)
with tf.name_scope('stddev'):
stddev = tf.sqrt(tf.reduce_sum(tf.square(var - mean))) tf.scalar_summary('sttdev/' + name, stddev)
tf.scalar_summary('max/' + name, tf.reduce_max(var))
tf.scalar_summary('min/' + name, tf.reduce_min(var))
tf.histogram_summary(name, var)
merged = tf.merge_all_summaries()
04
Session中调用
train_writer = tf.train.SummaryWriter(summary_dir + '/train', session.graph)valid_writer = tf.train.SummaryWriter(summary_dir + '/valid')
summary, _, l, predictions =
session.run([merged, optimizer, loss, train_prediction], options=run_options, feed_dict=feed_dict)
train_writer.add_summary(summary, step)
valid_writer.add_summary(summary, step)
train_writer.add_run_metadata(run_metadata, 'step%03d' % step)
05
查看可视化结果
python安装路径/python TensorFlow安装路径/tensorflow/tensorboard/tensorboard.py --logdir=path/to/log-directory
注意这个python必须是安装了TensorFlow的python,tensorboard.py必须制定路径才能被python找到,logdir必须是前面创建两个writer时使用的路径
比如我的是:
/home/cwh/anaconda2/envs/tensorflow/bin/python /home/cwh/anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorflow/tensorboard/tensorboard.py --logdir=~/coding/python/GDLnotes/src/convnet/summary
使用python
06
修改前:
多分支graph
修改后:
单分支graph
我的CNN TensorBoard代码:cnn_board.py(https://github.com/ahangchen/GDLnotes/blob/master/src/convnet/cnn_board.py)
07
Github地址:https://github.com/ahangchen/GDLnotes