【转】TensorBoard 在1.0 版本后的使用

注意:在阅读本文之前,请务必更新你的浏览器。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) 
  • 1
  • 2
  • 1
  • 2

得到一个loss的summary。

对于参数

应使用tf.summary.histogram(),如全链接的权重:

tf.summary.histogram("/weights",Weights) 
  • 1
  • 1

merge并运行

就像变量需要初始化一样,summary也需要merge:

merged = tf.summary.merge_all()
  • 1
  • 1

之后定义一个输出器记录下在运行中的数据:

writer = tf.summary.FileWriter("output/",sess.graph)
  • 1
  • 1

最后记得在训练过程中执行这两个模块:

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) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

TensorBoard 运行

安装TensorFlow时已经自带TensorBoard,如果直接在命令行中输入tensorboard而没有对应指令,可以从安装目录下执行:

python ~/.local/lib/python2.7/site-packages/tensorflow/tensorboard/tensorboard.py --logdir=output/
  • 1
  • 1

运行成功后,会显示:

(You can navigate to http://XXX.XXX.XXX.XXX:6006)
  • 1
  • 1

然后在浏览器中输入这个地址即可。

注意 
IE以及低版本的Chrome都对TensorBoard不兼容(firefox据说也不好用),会出现白屏或者点开loss图没有内容的情况。因为用的台式电脑,之前用的人装了360,我也就继续用了,结果在这里纠结了很久……

tensorboard

行了,这就成功了~


现在越学越觉得TensorFlow复杂了。。

注意:在阅读本文之前,请务必更新你的浏览器。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) 
  • 1
  • 2
  • 1
  • 2

得到一个loss的summary。

对于参数

应使用tf.summary.histogram(),如全链接的权重:

tf.summary.histogram("/weights",Weights) 
  • 1
  • 1

merge并运行

就像变量需要初始化一样,summary也需要merge:

merged = tf.summary.merge_all()
  • 1
  • 1

之后定义一个输出器记录下在运行中的数据:

writer = tf.summary.FileWriter("output/",sess.graph)
  • 1
  • 1

最后记得在训练过程中执行这两个模块:

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) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

TensorBoard 运行

安装TensorFlow时已经自带TensorBoard,如果直接在命令行中输入tensorboard而没有对应指令,可以从安装目录下执行:

python ~/.local/lib/python2.7/site-packages/tensorflow/tensorboard/tensorboard.py --logdir=output/
  • 1
  • 1

运行成功后,会显示:

(You can navigate to http://XXX.XXX.XXX.XXX:6006)
  • 1
  • 1

然后在浏览器中输入这个地址即可。

注意 
IE以及低版本的Chrome都对TensorBoard不兼容(firefox据说也不好用),会出现白屏或者点开loss图没有内容的情况。因为用的台式电脑,之前用的人装了360,我也就继续用了,结果在这里纠结了很久……

tensorboard

行了,这就成功了~


现在越学越觉得TensorFlow复杂了。。

猜你喜欢

转载自blog.csdn.net/Callon_H/article/details/70052744