TensorBoard是Tensorflow自带的一个可视化学习插件

通过TensorBoard 可以记录学习过程中的参数变化以及将网络结构以图的方式展现

 

要使用Tensorboard

在构建网络的过程中需要定义命名空间以及添加记录参数

如在定义网络层级的时候

with  tf.name_scope('hidden_1'):
    w_H_F = weight_variable([7, 64])
    b_H_F = bias_variable([64])

    t_X = tf.reshape(X, [-1, 7])

    h_fc1 = tf.nn.relu(tf.matmul(t_X, w_H_F) + b_H_F)

将with段内的变量概括为Hidden_1层

这样在TensorBoard的Graph界面就可以看到被概括的该层

点击右上的加号可以显示详细信息(如图)PS:大概是错误的网络结构2333

23333

 

如果要记录训练过程中的参数变化如Cost

则需要在命名空间内添加记录变量

with  tf.name_scope('cost'):
    cost = tf.div(tf.reduce_sum(tf.div(tf.abs(Y - y_out), tf.add(Y, 1.0))), train_step)
    # cost = tf.div(tf.reduce_sum(tf.abs(Y - y_out)), train_step)
    tf.scalar_summary('cost', cost)

tf.scalar_summary(变量名, 变量值)
这样在运行的时候可以在Events里看到对应的曲线图(唔,一个不收敛的网络…谁能告诉我为什么

1222

注意:曲线图并不是实时刷新会有1-2分钟的延迟

所以在训练刚开始时没有显示图像是正常现象

最后,归并设置的所有命名空间和变量,并设定日志保存的地方:

merged_summary_op = tf.merge_all_summaries()
summary_writer = tf.train.SummaryWriter('./mnist_logs', sess.graph)

之后每隔一定训练次数输出日志

result = sess.run(merged_summary_op, feed_dict={X: test_x, Y: test_y})
summary_writer.add_summary(result, epoch)

因为合并了所有变量后也同时包含了定义的cost变量(本文中)

所以也需要使用数据run一遍

之后在命令行使用

tensorboard --logdir=[日志存储目录]

启动tensorboard服务,然后访问http://localhost:6006/ 即可