TensorBoard使用与遇到的坑

一、TensorBoard 使用简介

   TensorFlow 可用于训练大规模深度神经网络所需的计算,使用该工具涉及的计算往往复杂而深奥。为了更方便 TensorFlow 程序的理解、调试与优化,TensorFlow一套名为 TensorBoard 的可视化工具。您可以用 TensorBoard 来展现 TensorFlow 图,绘制图像生成的定量指标图以及显示附加数据(如其中传递的图像)。当 TensorBoard 完全配置好后,它将显示如下:

image.png

二、TensorBoard使用流程

1、添加记录节点:tf.summary.scalar()/image()/histogram()等

  • tf.summary.scalar
    显示标量的信息,使用方法:
tf.summary.scalar(tags, values, collections=None, name=None)

例如:tf.summary.scalar('mean', mean)

一般在画loss,accuary时会用到这个函数。
  • tf.summary.histogram
    用来显示直方图信息,使用方法:
tf.summary.histogram(tags, values, collections=None, name=None) 

例如: tf.summary.histogram('histogram', var)

一般用来显示训练过程中变量的分布情况
  • tf.summary.image
    输出带图像的probuf,使用方法
tf.summary.image(tag, tensor, max_images=3, collections=None, name=None)
  • tf.summary.distribution
    分布图,一般用于显示weights分布

2、汇总记录节点:merged = tf.summary.merge_all()

merge_all 可以将所有summary全部保存到磁盘,以便tensorboard显示。使用merge_all可以很方便地实现自动管理需要显示的数据,不需要通过add_xxx的方法添加。
使用方法:

tf.summaries.merge_all(key='summaries')

3、 运行汇总节点:summary = sess.run(merged),得到汇总结果

4、日志书写器实例化:summary_writer = tf.summary.FileWriter(logdir, graph=sess.graph),实例化的同时传入 graph 将当前计算图写入日志。使用方法:

tf.summary.FileWritter(path,sess.graph)

可以调用其add_summary()方法将训练过程数据保存在filewriter指定的文件中

5、 调用日志书写器实例对象summary_writer的add_summary(summary, global_step=i)方法将所有汇总日志写入文件。

6、调用日志书写器实例对象summary_writer的close()方法写入内存,否则它每隔120s写入一次

7、Summary类方法汇总

image.png

tf.summary.FileWriter(logdir, graph=None, flush_secs=120, max_queue=10)

  • 负责将事件日志(graph、scalar/image/histogram、event)写入到指定的文件中
  • 初始化参数:
    • logdir:事件写入的目录
    • graph:如果在初始化的时候传入sess,graph的话,相当于调用add_graph() 方法,用于计算图的可视化
    • flush_sec:How often, in seconds, to flush the added summaries and events to disk.
    • max_queue:Maximum number of summaries or events pending to be written to disk before one of the ‘add’ calls block.
  • 其它常用方法:
    • add_event(event):Adds an event to the event file
    • add_graph(graph, global_step=None):Adds a Graph to the event file,Most users pass a graph in the constructor instead
    • add_summary(summary, global_step=None):Adds a Summary protocol buffer to the event file,一定注意要传入 global_step
    • close():Flushes the event file to disk and close the file
    • flush():Flushes the event file to disk
    • add_meta_graph(meta_graph_def,global_step=None)
    • add_run_metadata(run_metadata, tag, global_step=None)

三、启动Tensorboard

1、使用cmd的命令启动:

  • 运行程序,在指定的目录下(D:\logs)生成event文件
  • 在logs所在目录启动cmd(或者powershell)
  • 在cmd下,命令启动
tensorboard --logdir=logs
注意:logs的目录并不需要加引号, logs 中有多个event 时,会生成scalar 的对比图,但 graph 只会展示最新的结果

或者:tensorboard --logdir=event的绝对路径
  • 会生成一个网址(http:\DESKTOP:6006),输入到浏览器中即可查看

  • 如果6006不小心被占用了,可以通过制定port

tensorboard --logdir=event的绝对路径  --port=8008

四、遇到的问题

今天遇到了几个很难受的问题,和大家讨论一下:
1、使用tensorboard启动之后,想再启动一个新的event发现还是原来的,而且浏览器scalars左下角的目录也仍然是第一次的目录。

后来想再开启另一个event的时候只能指定port。

2、通过CTRL+C的退出的时候会有问题。而且这样退出之后,在浏览器输入地址还是可以看到第一次的event信息。所以无法正常关闭,应该是导致问题1的原因。
由此可见,如何关闭tensorboard是主要问题。

image.png

目前还没有解决,以前没有遇到过问题,所以很烦躁。搜索了很多其他人写的,也没有好的方法。

参考博客:

1、官方详细介绍:https://www.tensorflow.org/guide/summaries_and_tensorboard?hl=zh-cn
2、https://blog.csdn.net/gsww404/article/details/78605784

你可能感兴趣的:(TensorBoard使用与遇到的坑)