注意:在阅读本文之前,请务必更新你的浏览器。Chrome大法好!
数据、模型可视化是TensorFlow的一项重要的功能,安装后自带的TensorBoard是一个很强大的工具,但目前的教程大多都停留在TensorFlow 1.0 版本之前,一些函数已经改名无法使用,因此写一篇比较新的使用说明。
主要区别
如果之前使用过TensorBoard,其实只是换一下函数名就可以了。在Github上新版本说明文档中,已经有了对这一方面的说明:
Replace tf.scalar_summary, tf.histogram_summary, tf.audio_summary, tf.image_summary with tf.summary.scalar, tf.summary.histogram, tf.summary.audio, tf.summary.image, respectively. The new summary ops take name rather than tag as their first argument, meaning summary ops now respect TensorFlow name scopes.
也就是说,summary独立出来了,以前tf.XXX_summary
这样的下划线变成了tf.summary.XXX
的格式。
数据可视化
对于标量
如果我们想对标量在训练中可视化,可以使用tf.summary.scalar()
,比如损失loss:
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))
tf.summary.scalar('loss',loss)
得到一个loss的summary。
对于参数
应使用tf.summary.histogram()
,如全链接的权重:
tf.summary.histogram("/weights",Weights)
merge并运行
就像变量需要初始化一样,summary也需要merge:
merged = tf.summary.merge_all()
之后定义一个输出器记录下在运行中的数据:
writer = tf.summary.FileWriter("output/",sess.graph)
最后记得在训练过程中执行这两个模块:
for i in range(1000):
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
if i%50==0:# 50次记录一次
result = sess.run(merged,feed_dict={xs:x_data,ys:y_data})
writer.add_summary(result,i)
TensorBoard 运行
安装TensorFlow时已经自带TensorBoard,如果直接在命令行中输入tensorboard
而没有对应指令,可以从安装目录下执行:
python ~/.local/lib/python2.7/site-packages/tensorflow/tensorboard/tensorboard.py --logdir=output/
运行成功后,会显示:
(You can navigate to http://XXX.XXX.XXX.XXX:6006)
然后在浏览器中输入这个地址即可。
注意
IE以及低版本的Chrome都对TensorBoard不兼容(firefox据说也不好用),会出现白屏或者点开loss图没有内容的情况。因为用的台式电脑,之前用的人装了360,我也就继续用了,结果在这里纠结了很久……
行了,这就成功了~
现在越学越觉得TensorFlow复杂了。。