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:  可选的图的集合键的列表。
返回值:
类型为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+=1
    sess.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()
将所有的事件文件刷新到硬盘中。
调用这个方法确保到现在为止的所有事件文件都已经写入到了硬盘中。
















  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorBoard进行数据可视化,首先需要在Linux命令行下执行TensorBoard程序,并通过--logdir指定TensorFlow日志路径。例如,可以使用以下命令启动TensorBoard: ``` tensorboard --logdir=/tmp/tensorflow/mnist/logs/mnist_with_summaries ``` 这里的`/tmp/tensorflow/mnist/logs/mnist_with_summaries`是TensorFlow日志文件的路径。执行完这个命令后,TensorBoard会自动生成所有汇总数据的可视化结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [TensorBoard数据可视化](https://blog.csdn.net/u013381011/article/details/78913074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [tensorboard可视化](https://blog.csdn.net/qq_45850131/article/details/123920194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【tensorflow学习】使用tensorboard实现数据可视化](https://blog.csdn.net/u012223913/article/details/72677253)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值