美文网首页
TensorBoard使用与遇到的坑

TensorBoard使用与遇到的坑

作者: 银色尘埃010 | 来源:发表于2019-05-10 17:17 被阅读0次

    一、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使用与遇到的坑

          本文链接:https://www.haomeiwen.com/subject/zsbaoqtx.html