TensorFlow学习--Summary

Summary

在TensorFlow中,Summary是对网络中的张量进行检测的一种操作,不会影响数据流本身.利用tf.summary.FileWriter()可以将检测结果序列化存储到文件中.然后可以在TensorBoard中查看结果.

检测实例:

#!/usr/bin/python
# coding:utf-8

import tensorflow as tf
# 迭代计数器
global_step = tf.Variable(0, trainable=False)
# 迭代+1
increment_op = tf.assign_add(global_step, tf.constant(1))
# 创建一个根据计数器衰减的Tensor
learning_rate = tf.train.exponential_decay(0.1, global_step, decay_steps=1, decay_rate=0.9, staircase=False)
# 把learning_rate添加到观测中
tf.summary.scalar('learning_rate', learning_rate)
# 获取所有检测的操作
sum_ops = tf.summary.merge_all()
init = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init)
    # 指定检测结果的输出目录
    summary_writer = tf.summary.FileWriter('/tmp/logs/', sess.graph)
    for step in range(0, 10):
        val = sess.run(sum_ops)
        # 写入文件
        summary_writer.add_summary(val, global_step=step)
        sess.run(increment_op)

在终端输入:

tensorboard --logdir='/tmp/logs'

然后使用本地浏览器访问(本机6006端口).可以在TensorBoard中看到learning_rate的变化情况:

TensorFlow学习--Summary_第1张图片
根据指数衰减的学习率计算公式:
 DecayedLearningRate=LearningRateDecayRate(GlobalStep/DecaySteps)
第三步时,GlobalStep=3,DecaySteps=1,DecayRate=0.9,LearningRate=0.1.因此DecayedLearningRate=0.07290.如图所示.

相关API

  • tf.summary.scalar()
    向默认的collection中添加一个操作.输出包含单个标量值的Summary protocol buffer.
tf.summary.scalar(
name,               # 生成的节点的名称
tensor,             # 包含单个值的真实数值张量
collections=None,   # 图形集合键的可选列表
family=None)        # (可选项)用作汇总标签名称的前缀,在Tensorboard上显示的标签名称
  • tf.summary.merge_all()
    合并在默认图表中收集的所有摘要.
tf.summary.merge_all(
key=_ops.GraphKeys.SUMMARIES)  # 用于收集摘要的GraphKey.默认为GraphKeys.SUMMARIES

返回值为string类型的标量Tensor,包含由合并产生的序列化的Summary protocol buffer.若未收集摘要,则返回None.

  • tf.summary.FileWriter()
    创建一个FileWriter和一个事件文件.
tf.summary.FileWriter(
logdir,                 # 事件文件被写入的目录
graph=None,             # Graph对象
max_queue=10,           # 未决事件和摘要队列的大小
flush_secs=120,         # 刷新挂起的事件和摘要到磁盘的频率(单位:s)
graph_def=None,         # DEPRECATED:改为使用graph参数
filename_suffix=None    # 为每个事件文件名称添加后缀suffix
)

汇总在logdir中创建的新事件文件.当调用add_summary(),add_session_log(),add_event()或add_graph()等函数时,事件文件将包含Event protocol buffer.若将Graph传递给构造函数,它将被添加到事件文件中.(相当于后调用add_graph()).

你可能感兴趣的:(TensorFlow,tensorflow,Summary,TensorBoar)