TensorBoard 通过读取TensorFlow 的事件文件来运行。TensorFlow的事件文件包括了你会在TensorFlow 运行中涉及到的主要数据。下面是TensorBoard 中汇总数据(Summary data)的大体生命周期。

首先,创建你想汇总数据的TensorFlow 图,然后再选择你想在哪个节点进行汇总(summary)操作。

比如,假设你正在训练一个卷积神经网络,用于识别MNIST标签。你可能希望记录学习速度(learning rate)的如何变化,以及目标函数如何变化。通过向节点附加scalar_summary操作来分别输出学习速度和期望误差。然后你可以给每个scalar_summary分配一个有意义的标签,比如‘learning rate’ 和 'loss function'。或者你还希望显示一个特殊层中激活的分布,或者梯度权重的分布。可以通过分别添加histogram_summary 运算来收集权重变量和梯度输出。

def training(loss, learning_rate):tf.scalar_summary(loss.op.name, loss)optimizer = tf.train.GradientDescentOptimizer(learning_rate)global_step = tf.Variable(0, name='global_step', trainable=False)train_op = optimizer.minimize(loss, global_step=global_step)return train_op

在TensorFlow 中,所有测操作只有当你执行,或者另一个操作依赖于它的输出时才会运行。我们刚才创建的这些节点(summary nodes)都围绕着你的图像:没有任何操作依赖于它们的结果。因此,为了生成汇总信息,我们需要运行所有这些节点。这样的手动工作是很乏味的,因此可以使用tf.merge_all_summaries 来将他们合并为一个操作。

然后你可以执行合并命令,它会依据特点步骤将所有数据生成一个序列化的Summary protobuf 对象。最后,为了将汇总数据写入磁盘,需要将汇总的protobuf 对象传递给

tf.scalar_summary(tags, values, collections=None, name=None)

输出标量值的总和

输入的tags 和 values 必须具有相同的shape。产生的总和有每一个tag-value 对的值。

  • tags:  一个字符串 Tensor, Tags 为了求和
  • values:  一个真正的数值 Tensor 。值用于求和
  • collections:  可选的图的集合键的列表。
返回值:
类型为string 的一个标量 Tensor, 序列化的和的协议buffer
tf.merge_all_summaries(key='summaries')

合并默认图收集到的所有汇总节点。

参数:

  • key:  用于收集汇总的GraphKey。默认为 GraphKeys.SUMMARIES
返回值:
如果没有收集到summaries,返回None。否则返回一个标量的Tensor,类型为字符串,包含由于合并产生的序列化 Summary protocol buffer。

class tf.train.SummaryWriter

把 Summary protocol buffer 写入到事件文件中。

SummaryWriter 类提供了一种机制在给定的目录创建一个事件文件,并且添加 summaries 和 事件到事件文件中。这个类异步地更新文件内容。允许你在训练过程中调用方法直接添加数据到文件中,而不减缓训练速度。

tf.train.SummaryWriter.__init__(logdir, graph=None, max_queue=10, flush_secs=120, graph_def=None)

创建一个SummaryWriter 和 一个事件文件。

当构造summary writer 过程中在logdir 创建了一个新的事件文件。这个事件文件把包含当调用下面其中之一的函数:add_summary(), add_session_log(), add_event(), add_graph() 时构造的事件 protocol buffers。

如果你传递一个Graph 到构造器中,它被添加到事件文件中。(等效于在后边调用 add_graph() )

TensorBoard 将从文件中挑选图并以图形的形式展示,因此你可以交互地探索你构建的图。一般上传递你启动session的那个图:

...create a graph...
# Launch the graph in a session.
sess=tf.Session()
#Create a summary writer, add the 'graph' to the event file.
writer=tf.train.SummaryWriter(<some-directory>, sess.graph)
merged_summary_op=tf.merge_all_summaries()
summary_writer=tf.train.SummaryWriter('/tmp/mnist_logs',sess.graph)
total_step=0
while training:total_step+=1sess.run(training_op)if total_step % 100 ==0:summary_str=sess.run(merged_summary_op)summary_writer.add_summary(summary_str,total_step)

构造器的其他参数控制异步地写入事件文件中:

  • flush_secs:  多久将新增加的summaries 写入到硬盘中的事件中,以秒计算。
  • max_queue:  最大的summaries 或 event 直到 ‘add’调用阻塞之前。
参数:
  • logdir:  字符串。事件文件写入的目录。
tf.train.SummaryWriter.add_summary(summary, global_step=None)
添加一个Summary protocol buffer 到事件文件。
这个方法用一个 Event protocol buffer 包裹提供的summary,并将其添加到事件文件中。
你可以使用 Sess.run() 或 Tensor.eval() 传递计算过的任意summary 操作到这个方法中。另外,你可以传递一个你用自己的数据计算得到的 tf.Summary protocol buffer。后者一般用于报告事件文件中评估的结果。
参数:
  • summary:  一个Summary protocol buffer,可选的序列化的字符串
  • global_step:  数值。可选的 global step value 用于记录summary
tf.train.SummaryWriter.flush()
将所有的事件文件刷新到硬盘中。
调用这个方法确保到现在为止的所有事件文件都已经写入到了硬盘中。

Summaries and TensorBoard相关推荐

  1. TensorBoard可视化网络结构和参数Tensorboard windows显示空白

    Tensorboard显示空白,或者graphs中显示"No graph definition files were found",在数据正确的前提下,最可能是路径的问题. Win ...

  2. Tensorflow 可视化 TensorBoard 尝试~

    tensorboard --logdir=/home/ubuntu/temp/log 注意:在阅读本文之前,请务必更新你的浏览器.Chrome大法好!  数据.模型可视化是TensorFlow的一项重 ...

  3. TensorFlow教程之进阶指南 3.4 TensorBoard: 图表可视化

    本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. TensorFlow 图表计算强大而又复杂,图表可视化在理解和调试时显得非常有帮助. 下面是一个运作时的可式化例子 ...

  4. 【TensorFlow】官方例子mnist_with_summaries.py在windows下运行tensorboard

    一.修改方案   TensorFlow官方例子mnist_with_summaries.py里面的主函数里面是按照linux的路径在写的,这在windows运行后生成的log文件路径会出现问题. 官方 ...

  5. DL-3利用MNIST搭建神经网络模型(三种方法):1.用CNN 2.用CNN+RNN 3.用自编码网络autoencoder

    Author:吾爱北方的母老虎 原创链接:https://blog.csdn.net/weixin_41010198/article/details/80286216 import tensorflo ...

  6. TensorFlow 教程 --进阶指南--3.9TensorBoard: 图表可视化

    TensorFlow 图表计算强大而又复杂,图表可视化在理解和调试时显得非常有帮助. 下面是一个运作时的可式化例子. "一个TensorFlow图表的可视化") 一个TensorF ...

  7. 【TF2】Eager Execution机制

    文章目录 1. Eager Execution 简介 1.1 eager execution 引入 1.2 理解eager execution 1.3 eager execution优缺点 2. ea ...

  8. Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering论文解读( and code)

    <Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering> 提供了已实现的GCN,并且 ...

  9. tensorflow 一些概念

    原文链接: tensorflow 一些概念 上一篇: Python 矩阵转图片 下一篇: 基础算法 为什么  c = tf.matmul(a, b) 不立即执行矩阵相乘? 在 TensorFlow 的 ...

最新文章

  1. JavaScript 定义类时如何将方法提取出来
  2. 【转载】全面理解javascript的caller,callee,call,apply概念(修改版)
  3. 报名 | 统计学概论和医疗临床大数据分析讲座
  4. WLST - Presentation Transcript
  5. WebRTC各种资料集合
  6. SAP中手工配置Delivery打印message
  7. larvel php restful_Laravel教你简单写出专业的RestfulAPI
  8. Storm编程入门API系列之Storm的可靠性的ACK消息确认机制
  9. c语言比较大小 谁大选谁,C语言比较优先级
  10. Spring Boot笔记-get请求发送json数据(方便前端vue解析)
  11. 将 PAGE_VERIFY 数据库选项设置为 CHECKSUM
  12. LAMP下http跳转到 https
  13. hibernate多对多映射关系实现
  14. maven docker plugin 常见问题解决
  15. linux上安装osg_Linux下编译OSG全过程
  16. JPA+Hibernate 3.3 ——第一个JPA程序
  17. linux查看docker进程流量,linux中查看docker内存占用情况
  18. python中语法错误英文提示解析(可能没有解决方案)
  19. setTimeout expects a function as first argument but got undefined
  20. 浅谈解析库XPath,bs4和pyquery

热门文章

  1. java 将set转成数组,Java程序将Set转换为数组
  2. 一文带你看懂工厂模式
  3. Mac的esc键失效的解决方法
  4. Linux下ESC键无法退出
  5. windows11删除此电脑的6个图标,包括视频、图片、文档、下载、音乐、桌面
  6. android布局空格以及首行缩进表示符
  7. ndnSIM学习(八)——examples之ndn-simple.cpp每个函数逐行剖析
  8. 机器学习Sklearn——红酒分类案例详解决策树模型参数
  9. java long型数据做余数运算_Java数据类型与运算符
  10. 那些怪异的量化交易策略