TensorBoard 简介及使用流程

仅供学习参考,转载地址:http://blog.csdn.net/mzpmzk/article/details/77914941

一、TensorBoard 简介及使用流程

1、TensoBoard 简介

TensorBoard 和 TensorFLow 程序跑在不同的进程中,TensorBoard 会自动读取最新的 TensorFlow 日志文件,并呈现当前 TensorFLow 程序运行的最新状态。

2、TensorBoard 使用流程

  • 添加记录节点:tf.summary.scalar/image/histogram()
  • 汇总记录节点:merged = tf.summary.merge_all()
  • 运行汇总节点:summary = sess.run(merged),得到汇总结果
  • 日志书写器实例化:summary_writer = tf.summary.FileWriter(logdir, graph=sess.graph),实例化的同时传入 graph 将当前计算图写入日志
  • 调用日志书写器实例对象summary_writeradd_summary(summary, global_step=i)方法将所有汇总日志写入文件
  • 调用日志书写器实例对象summary_writerclose()方法写入内存,否则它每隔120s写入一次

二、TensorFlow 可视化分类

1、计算图的可视化:add_graph()

  1. ...create a graph...

  2. # Launch the graph in a session.

  3. sess = tf.Session()

  4. # Create a summary writer, add the 'graph' to the event file.

  5. writer = tf.summary.FileWriter(logdir, sess.graph)

  6. writer.close() # 关闭时写入内存,否则它每隔120s写入一次

2、监控指标的可视化:add_summary()

I、SCALAR

tf.summary.scalar(name, tensor, collections=None, family=None)

  • 可视化训练过程中随着迭代次数准确率(val acc)、损失值(train/test loss)、学习率(learning rate)、每一层的权重和偏置的统计量(mean、std、max/min)等的变化曲线

  • 输入参数:

    • name:此操作节点的名字,TensorBoard 中绘制的图形的纵轴也将使用此名字
    • tensor: 需要监控的变量 A real numeric Tensor containing a single value.
  • 输出:

    • A scalar Tensor of type string. Which contains a Summary protobuf.

II、IMAGE

tf.summary.image(name, tensor, max_outputs=3, collections=None, family=None)

  • 可视化当前轮训练使用的训练/测试图片或者 feature maps

  • 输入参数:

    • name:此操作节点的名字,TensorBoard 中绘制的图形的纵轴也将使用此名字
    • tensor: A r A 4-D uint8 or float32 Tensor of shape [batch_size, height, width, channels] where channels is 1, 3, or 4
    • max_outputs:Max number of batch elements to generate images for
  • 输出:

    • A scalar Tensor of type string. Which contains a Summary protobuf.

III、HISTOGRAM

tf.summary.histogram(name, values, collections=None, family=None)

  • 可视化张量的取值分布

  • 输入参数:

    • name:此操作节点的名字,TensorBoard 中绘制的图形的纵轴也将使用此名字
    • tensor: A real numeric Tensor. Any shape. Values to use to build the histogram
  • 输出:

    • A scalar Tensor of type string. Which contains a Summary protobuf.

IV、MERGE_ALL

tf.summary.merge_all(key=tf.GraphKeys.SUMMARIES)

  • Merges all summaries collected in the default graph
  • 因为程序中定义的写日志操作比较多,一一调用非常麻烦,所以TensoorFlow 提供了此函数来整理所有的日志生成操作,eg:merged = tf.summary.merge_all ()
  • 此操作不会立即执行,所以,需要明确的运行这个操作(summary = sess.run(merged))来得到汇总结果
  • 最后调用日志书写器实例对象的add_summary(summary, global_step=i)方法将所有汇总日志写入文件

3、多个事件(event)的可视化:add_event()

  • 如果 logdir 目录的子目录中包含另一次运行时的数据(多个 event),那么 TensorBoard 会展示所有运行的数据(主要是scalar),这样可以用于比较不同参数下模型的效果,调节模型的参数,让其达到最好的效果!
  • 上面那条线是迭代200次的loss曲线图,下面那条是迭代400次的曲线图,程序见最后。

这里写图片描述


三、通过命名空间美化计算图

  • 使用命名空间使可视化效果图更有层次性,使得神经网络的整体结构不会被过多的细节所淹没
  • 同一个命名空间下的所有节点会被缩略成一个节点,只有顶层命名空间中的节点才会被显示在 TensorBoard 可视化效果图上
  • 可通过tf.name_scope()或者tf.variable_scope()来实现,具体见最后的程序。

这里写图片描述


四、将所有日志写入到文件:tf.summary.FileWriter()

这里写图片描述

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. 通过 Windows 下的 cmd 启动

  • 运行你的程序,在指定目录下(logs)生成 event 文件
  • 在 logs 所在目录,按住 shift 键,点击右键选择在此处打开 cmd
  • 在 cmd 中,输入以下命令启动 tensorboard --logdir=logs,注意:logs的目录并不需要加引号, logs 中有多个event 时,会生成scalar 的对比图,但 graph 只会展示最新的结果
  • 把下面生成的网址(http://DESKTOP-S2Q1MOS:6006 # 每个人的可能不一样) copy 到浏览器中打开即可 
    这里写图片描述 
    这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值