TensorFlow 中可视化操作 TensorBoard 的相关用法及实例代码

一、环境

TensorFlow API r1.12

CUDA 9.2 V9.2.148

cudnn64_7.dll

Python 3.6.3

Windows 10

 

二、TensorFlow 官方说明

(1)TensorBoard

https://tensorflow.google.cn/guide/summaries_and_tensorboard

https://github.com/tensorflow/tensorboard

 

(2)FileWriter

将摘要(Summary)协议缓冲写入到事件文件中

FileWriter 类提供了再给定的路径下创建事件文件、将摘要和事件写入该文件的机制。

事件文件中的内容更新机制是异步的

允许训练程序调用相应的方法将来自不同训练轮次的数据直接添加到事件文件中,从而避免训练速度的减缓的问题

当通过参数 tf.Session 构建时,FileWriter 将会在新的基于图的摘要(tf.contrib.summary)上构建一个适配层,从而利用需要一个 FileWriter 实例的先存的代码编写的新的摘要

https://www.tensorflow.org/api_docs/python/tf/summary/FileWriter?hl=zh-cn

构造方法:

__init__(
    logdir,
    graph=None,
    max_queue=10,
    flush_secs=120,
    graph_def=None,
    filename_suffix=None,
    session=None
)

输入参数:

(1)logdir:字符型参数,事件文件保存的文件夹路径

(2)graph:图对象,如:sess.graph

(3)max_queue:整型参数,事件和摘要等待的队列大小

(4)flush_secs:数字参数,每隔多少秒将等待的时间和摘要全部从内存中清理出到硬盘中

(5)graph_def:已经弃用的参数,推荐使用参数 graph 代替

(6)filename_suffix:字符型参数,设置时间文件的拓展名

(7)session:tf.Session 对象

 

方法:

(1)__enter__

通过 with 语句构建 Python 的上下文管理器,__enter__ 负责环境准备工作,同时返回一资源对象

(2)__exit__

通过 with 语句构建 Python 的上下文管理器,__exit__ 负责资源清理工作

(3)add_event

给事件文件添加事件

(4)add_graph

给事件文件添加图

(5)add_meta_graph

给事件文件添加一个 MetaGraphDef

(6)add_run_metadata

为单个 session.run() 调用添加元数据信息

(7)add_session_log

给事件文件添加一个 SessionLog 协议缓冲

(8)add_summary

给事件文件添加摘要(Summary)协议缓冲

(9)close

将事件文件刷新到磁盘并关闭它

(10)flush

将事件文件刷新到磁盘

(11)get_logdir reopen

返回写入事件文件的文件夹路径

 

 

三、Tensorboard 的使用流程

1、Tensorboard 最常用方式的整体使用流程

(1)创建 FileWriter 对象实例

summary_writer =tf.summary.FileWriter("./summary/", sess.graph)

(2)向 summary 中添加要观察和统计的变量

标量:tf.summary.scalar("var_scalar", var)

直方图:tf.summary.histogram('var_histogram', var)

图像:tf.summary.image('var_image', var)

音频:tf.summary.audio('var_audio', var)

文本:tf.summary.text('var_text', var)

(3)合并summay

merged_summary = tf.summary.merge_all()

(4)在会话中执行合并 summary操作

result_summary = sess.run(merged_summary, feed_dict={x_placeholder: batch_data, y_placeholder: batch_labels})

(5)在会话中第 i 轮训练中将相应的 result_summary 写入到 summary_writer 对象

summary_writer.add_summary(result_summary, i)

(6)将 summary 更新到磁盘,并关闭它 summary_writer

summary_writer.close()

(7)在命令行中运行 TensorBoard

tensorboard --logdir == "./summary/"

(8)在浏览器页面中查看 TensorBoard 可视化结果

http://localhost:6006

 

四、几种可视化数据说明

(1)标量(scalar):用于汇总指定的标量数据,如:损失(loss)、精度(accuracy)等,最终在 TensorBoard 展示该标量数值随时间时间变化的可视化效果

(2)

(3)

(4)

(5)

 

五、实例

(1)实例1

>>> import tensorflow as tf
>>> x = tf.constant(value=[[1.0,2.0]])
>>> y = tf.constant(value=[[3.0],[4.0]])
>>> result = tf.matmul(x,y)
>>> writer = tf.summary.FileWriter(logdir='./summmary', tf.get_default_graph())
>>> with tf.Session() as sess:
...     print(sess.run(result))
... 
2018-12-24 00:05:27.461497: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
[[11.]]
>>> sess.close()

(2)实例2

>>> x = tf.constant(value=1.0, dtype=tf.float32, name='x')
>>> y = tf.constant(value=2.0, dtype=tf.float32, name='y')
>>> result = tf.add(x=x,y=y)
>>> init_op = tf.global_variables_initializer()
>>> with tf.Session() as sess:
...     sess.run(init_op)
...     filewriter = tf.summary.FileWriter(logdir='./summary/', graph=sess.graph)
...     sess.run(result)
... 
3.0

运行以上 TensorFlow 程序后,会在指定的当前路径下的 summary 文件夹下生成一个以 .local 为拓展名事件文件

 

2、启动 TensorBoard

退出Python,在命令中输入以下命令:

tensorboard --logdir="./summary/"

tensorboard --logdir="./summary"

注意:

(1)路径的最后带不带斜杠都行

(2)--logdir 后面指向的是保存事件文件的文件夹,而不是事件文件

(3)重新运行 TensorFlow 源程序时,TensorBoard 会自动重新加载最新的时间文件,“Overwriting the metagraph with the newest event.”,不需要每次都重新运行 TensorBoard 命令,只需要刷新浏览器即可以查看最新的事件文件

(4)如果在 TensorFlow 程序中设置了操作 (op) 的 name 参数,name在 TensorBoard 浏览器显示中的节点上显示相应的 name,否则 TensorBoard 会自动按照操作(op)的类型从 0 开始编号,如:“const_0”,“const_1”,“MatMul_1” 等

 

3、查看 TensorBoard

复制命令行中最后提示的 TensorBoard 代码到浏览器的地址栏中,打开TensorBoard界面

http://localhost:6006

(1)没有给相关操作(op)设置 name 参数时,图中的编号由 TensorFlow 自动从 0 开始编号

(2)给相关操作(op)设置 name 参数时,图中的节点显示设置的 name

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn-WJW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值