Summaries and TensorBoard
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: 可选的图的集合键的列表。
合并默认图收集到的所有汇总节点。
参数:
- key: 用于收集汇总的GraphKey。默认为 GraphKeys.SUMMARIES
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: 字符串。事件文件写入的目录。
- summary: 一个Summary protocol buffer,可选的序列化的字符串
- global_step: 数值。可选的 global step value 用于记录summary
Summaries and TensorBoard相关推荐
- TensorBoard可视化网络结构和参数Tensorboard windows显示空白
Tensorboard显示空白,或者graphs中显示"No graph definition files were found",在数据正确的前提下,最可能是路径的问题. Win ...
- Tensorflow 可视化 TensorBoard 尝试~
tensorboard --logdir=/home/ubuntu/temp/log 注意:在阅读本文之前,请务必更新你的浏览器.Chrome大法好! 数据.模型可视化是TensorFlow的一项重 ...
- TensorFlow教程之进阶指南 3.4 TensorBoard: 图表可视化
本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. TensorFlow 图表计算强大而又复杂,图表可视化在理解和调试时显得非常有帮助. 下面是一个运作时的可式化例子 ...
- 【TensorFlow】官方例子mnist_with_summaries.py在windows下运行tensorboard
一.修改方案 TensorFlow官方例子mnist_with_summaries.py里面的主函数里面是按照linux的路径在写的,这在windows运行后生成的log文件路径会出现问题. 官方 ...
- DL-3利用MNIST搭建神经网络模型(三种方法):1.用CNN 2.用CNN+RNN 3.用自编码网络autoencoder
Author:吾爱北方的母老虎 原创链接:https://blog.csdn.net/weixin_41010198/article/details/80286216 import tensorflo ...
- TensorFlow 教程 --进阶指南--3.9TensorBoard: 图表可视化
TensorFlow 图表计算强大而又复杂,图表可视化在理解和调试时显得非常有帮助. 下面是一个运作时的可式化例子. "一个TensorFlow图表的可视化") 一个TensorF ...
- 【TF2】Eager Execution机制
文章目录 1. Eager Execution 简介 1.1 eager execution 引入 1.2 理解eager execution 1.3 eager execution优缺点 2. ea ...
- Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering论文解读( and code)
<Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering> 提供了已实现的GCN,并且 ...
- tensorflow 一些概念
原文链接: tensorflow 一些概念 上一篇: Python 矩阵转图片 下一篇: 基础算法 为什么 c = tf.matmul(a, b) 不立即执行矩阵相乘? 在 TensorFlow 的 ...
最新文章
- JavaScript 定义类时如何将方法提取出来
- 【转载】全面理解javascript的caller,callee,call,apply概念(修改版)
- 报名 | 统计学概论和医疗临床大数据分析讲座
- WLST - Presentation Transcript
- WebRTC各种资料集合
- SAP中手工配置Delivery打印message
- larvel php restful_Laravel教你简单写出专业的RestfulAPI
- Storm编程入门API系列之Storm的可靠性的ACK消息确认机制
- c语言比较大小 谁大选谁,C语言比较优先级
- Spring Boot笔记-get请求发送json数据(方便前端vue解析)
- 将 PAGE_VERIFY 数据库选项设置为 CHECKSUM
- LAMP下http跳转到 https
- hibernate多对多映射关系实现
- maven docker plugin 常见问题解决
- linux上安装osg_Linux下编译OSG全过程
- JPA+Hibernate 3.3 ——第一个JPA程序
- linux查看docker进程流量,linux中查看docker内存占用情况
- python中语法错误英文提示解析(可能没有解决方案)
- setTimeout expects a function as first argument but got undefined
- 浅谈解析库XPath,bs4和pyquery