一、TensorBoard 使用简介
image.pngTensorFlow 可用于训练大规模深度神经网络所需的计算,使用该工具涉及的计算往往复杂而深奥。为了更方便 TensorFlow 程序的理解、调试与优化,TensorFlow一套名为 TensorBoard 的可视化工具。您可以用 TensorBoard 来展现 TensorFlow 图,绘制图像生成的定量指标图以及显示附加数据(如其中传递的图像)。当 TensorBoard 完全配置好后,它将显示如下:
二、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类方法汇总
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是主要问题。
目前还没有解决,以前没有遇到过问题,所以很烦躁。搜索了很多其他人写的,也没有好的方法。
参考博客:
1、官方详细介绍:https://www.tensorflow.org/guide/summaries_and_tensorboard?hl=zh-cn
2、https://blog.csdn.net/gsww404/article/details/78605784
网友评论