TensorFlow之TensorBoard初探

2016-10-16 陈伟才 人工智能学堂

一、TensorBoard简介

TensorFlow拥有强大的图计算,但是强大的图计算同时也是极其复杂的,对于初学者来说,很难理解整个图计算学习过程,这无疑增加了人工智能初学者的学习门槛。为之,TensorFlow提供的可视化WEB工具套件 - - TensorBoard,以图形化的方式展示和理解机器学习的过程,进而进行优化与调试。

TensorFlow之TensorBoard初探_第1张图片

二、TensorBoard安装

一般安装TensorFlow的过程中,同时也会将TensorBoard安装好。如按照上篇文章的按照过程,TensorBoard则安装到~/tensorflow/bin目录下。我们可以直接启动TensorBoard服务,如下:

# nohup tensorflow/bin/tensorboard --logdir=/root/tensor-board/logs >/dev/null 2>&1 &

启动命令指定了tensorboard logdir目录,即如果需要通过TensorBoard可视化系统监控TensorFlow机器学习,则需要在TensorFlow机器学习中指定将相关的log导入到上述logdir中,这样,TensorBoard会从logdir分析相关执行过程,并将结果展示出来。

如何在TensorFlow中增加代码实现可视化监控,并通过TensorBoard展示,在本篇下文会详细描述。

TensorBoard web工具集将会监控6006端口,即在浏览器中输入 http://127.0.0.1:6006/ 则可以看到TensorBoard神秘面纱,如下图所示:

TensorFlow之TensorBoard初探_第2张图片

TensorFlow官方给提供了一个交互式的demo让初学者了解TensorBoard,

https://www.tensorflow.org/tensorboard/index.html

三、TensorBoard APIs

1. tf.scalar_summary(tags, values, collections=None, name=None)

2.tf.image_summary(tag, tensor, max_images=3, collections=None, name=None)

3. tf.audio_summary(tag, tensor, sample_rate, max_outputs=3, collections=None, name=None)

4. tf.histogram_summary(tag, values, collections=None, name=None)

上述这组API分别对标量,图片,音频以及柱状图进行汇总统计,以Protocol Buffer结构进行表示。

5. tf.merge_all_summaries(key='summaries')

该API则是对所有类型的统计最终汇总在默认的Graph中。

6. class tf.train.SummaryWriter

该类负责将上述APIs收集到的信息(Protocal Buffer形式)持久化到磁盘event文件中去。

下面我们以MNIST为例,展示如何采用TensorBoard进行可视化信息收集与展示。

四、MNIST TensorBoard版本

下面我们以上一篇文章中的MNIST例子为示例,增加TensorBoard Summary,实现TensorBoard可视化。对W,B,cross_entropy,accuracy等变量进行summary,并将采集到的信息持久化到/root/tensor-board/logs/mnist_logs目录下的文件。

该程序可以从https://github.com/chenweicai/tensorflow-study/blob/master/tf_softmax_mnist_tensorboard.py出下载。

# Softmax Regression using tensorflow.

import tensorflow as tf

# Download the mnist data.

from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("/tmp/MNIST_data", one_hot=True)

# Input placeholder, 2-D tensor of floating-point nunbers.

# here None means that a dimension can be of any length.

X = tf.placeholder(tf.float32, [None, 784], name = 'X-input')

# New placeholder to input the correct answers.

Y = tf.placeholder(tf.float32, [None, 10], name = 'Y-input')

# Initialize both W and b as tensors full of zeros.

# Since we are going to learn W and b, it doesn't

# matter very much what they initial are.

W = tf.Variable(tf.zeros([784, 10]), name = 'Weight')

B = tf.Variable(tf.zeros([10]), name = 'Bias')

# Tensorboard histogram summary.

tf.histogram_summary('Weight', W)

tf.histogram_summary('Bias', B)

with tf.name_scope('Layer'):

y = tf.nn.softmax(tf.matmul(X, W) + B)

with tf.name_scope('Cost'):

cross_entropy = tf.reduce_mean(-tf.reduce_sum(Y * tf.log(y), \

reduction_indices=[1]))

# Tensorboard scalar summary.

tf.scalar_summary('Cost', cross_entropy)

with tf.name_scope('Train'):

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

with tf.name_scope('Accuracy'):

accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.argmax(y, 1), \

tf.argmax(Y, 1)), tf.float32))

# Tensorboard scalar summary.

tf.scalar_summary('Accuracy', accuracy)

with tf.Session() as sess:

# Merge all summaries.

writer = tf.train.SummaryWriter('/root/tensor-board/logs/mnist_logs', sess.graph)

merged = tf.merge_all_summaries()

tf.initialize_all_variables().run()

# Training 1000 times, 100 for each loop.

for i in range(1000):

batch_xs, batch_ys = mnist.train.next_batch(100)

_, summary = sess.run([train_step, merged], feed_dict={X: batch_xs, Y: batch_ys})

# Write summary into files.

writer.add_summary(summary, i)

# Close summary writer.

writer.close()

print('Accuracy', accuracy.eval({X: mnist.test.images, Y: mnist.test.labels}))

五、TensorBoard可视化

执行上述程序后,在浏览器中输入http://127.0.0.1:6006/,可以看到MNIST相关的信息,如下:

1. EVENTS

2. DISTRIBUTIONS

TensorFlow之TensorBoard初探_第3张图片

3. HISTOGRAMS

TensorFlow之TensorBoard初探_第4张图片

4. GRAPHS

TensorFlow之TensorBoard初探_第5张图片

点击上面节点如'Cost','Accurary','Layer'的'+'号,就能展开该节点,能看到更详细的信息,如下:

TensorFlow之TensorBoard初探_第6张图片

从上图可以看出,通过TensorBoard可视化WEB工具,可以帮助我们对机器学习过程的理解,进而帮助我们进行优化改进等。

参考资料

https://github.com/tensorflow/tensorflow/blob/r0.11/tensorflow/tensorboard/README.md

TensorFlow之TensorBoard初探_第7张图片

                                                        长按二维码关注公众号 '人工智能学堂'

你可能感兴趣的:(TensorFlow之TensorBoard初探)