tensorflow中TensorBoard用法:

TensorBoard 工作原理:

  • 简单来说,TensorBoard 是通过一些操作(summary operations)将数据记录到文件(event files)中,然后再读取文件来完成作图的。
  • 工作步骤:
    • Summary:对需要可视化的变量进行summary操作,以记录变量的日志信息。
    • Merge:使用 tf.summary.merge_all 来将定义的多个summary操作聚合成一个操作,由它来产生所有 summary 数据。
    • Writer:使用tf.summary.FileWriter() 定义一个写summary数据的操作,定义时需要指定一个目录。
    • Run:在运行的时候使用add_summary()来将某一步的summary数据记录到文件中。
    • 启动命令:
      当训练完成后,使用 tensorboard --logdir=path/to/log-directory 来启动TensorBoard,按照提示在浏览器打开页面,
      注意把 path/to/log-directory 替换成你上面指定的目录。

Tensorboard的大纲:

tensorflow中TensorBoard用法:_第1张图片

SCALARS(折线图)

tensorflow中TensorBoard用法:_第2张图片

作用:

  • 用来显示标量信息,一般用来保存loss,accuary,学习率等数据,比较常用

函数原型:

tf.summary.scalar(name, tensor, collections=None, family=None)

参数:

  • name: 给保存的数据的命名;可以理解为图的标题;在 GRAPHS 中则是该节点的名字
  • tensor: 要保存的tensor,在scalar函数中应该是一个标量,如当前的学习率、Loss等;

IMAGES(图像)

作用:

  • 如果你的模型输入是图像,然后你想看看模型每次的输入图像是什么样的,以保证每次输入的图像没有问题(因为你可能在模型中对图像做了某种变换,而这种变换是很容易出问题的),IMAGES 面板就是干这个的,它可以显示出相应的输入图像,默认显示最新的输入图像,如下图:
    tensorflow中TensorBoard用法:_第3张图片

函数原型:

tf.summary.image(name,tensor, max_outputs=3, collections=None,    family=None)

参数:

  • max_outputs:指的是最多显示多少张图片,默认为 3

GRAPHS(模型图)

  • 在GRAPHS面板上,在这里可以展示出你所构建的网络整体结构,显示数据流的方向和大小,也可以显示训练时每个节点的用时、耗费的内存大小以及参数多少。默认显示的图分为两部分:主图(Main Graph)和辅助节点(Auxiliary Nodes)。其中主图显示的就是网络结构,辅助节点则显示的是初始化、训练、保存等节点。我们可以双击某个节点或者点击节点右上角的 + 来展开查看里面的情况,也可以对齐进行缩放,每个节点的命名都是我们在代码中使用 tf.name_scope() 定义好的。下面介绍下该面板左侧的功能。
    tensorflow中TensorBoard用法:_第4张图片

函数原型:

tf.summary.FileWriter(logdir,graph=None,max_queue=10,flush_secs=120,graph_def=None,filename_suffix=None, session=None)

作用:

  • 指定一个文件用来保存图;可以调用其add_summary()方法将训练过程数据保存在filewriter指定的文件中

参数:

  • logdir:事件文件保存目录
  • graph: graph(图)对象,有该对象会将图写入文件。
  • max_queue: 队列中事件和概要的最大数量,默认为10;
  • flush_secs: 事件和概要保存到本地磁盘的间隔,默认120S;
  • filename_suffix: 可选参数,事件文件的后缀

例子:

tf.summary.scalar('accuracy',acc) #生成准确率标量图  
merge_summary = tf.summary.merge_all()  
train_writer = tf.summary.FileWriter(dir,sess.graph)
#定义一个写入summary的目标文件,并写入计算图,dir为写入文件地址  
......(交叉熵、优化器等定义)  
for step in xrange(training_step): #训练循环  
    train_summary = sess.run(merge_summary,feed_dict =  {...})
		#调用sess.run运行图,生成一步的训练过程数据  
    train_writer.add_summary(train_summary,step)
		#调用train_writer的add_summary方法将训练过程以及训练步数保存

HISTOGRAMS(直方图)

函数原型:

tf.summary.histogram(tags, values, collections=None, name=None)

作用:

  • 用来显示直方图信息;一般用来显示训练过程中变量的分布情况

说明:

  • tf.summary.histogram()将输入的一个任意大小和形状的张量压缩成一个由宽度和数量组成的直方图数据结构.假设输入 [0.5, 1.1, 1.3, 2.2, 2.9, 2.99],则可以创建三个bin,分别包含0-1之间/1-2之间/2-3之间的所有元素,即三个bin中的元素分别为[0.5]/[1.1,1.3]/[2.2,2.9,2.99].这样,通过可视化张量在不同时间点的直方图来显示某些分布随时间变化的情况

例子:

import tensorflow as tf
k = tf.placeholder(tf.float32)
# 创建一个均值变化的正态分布(由0到5左右)
mean_moving_normal = tf.random_normal(shape=[1000], mean=(5*k), stddev=1) # 将该分布记录到直方图汇总中
tf.summary.histogram("normal/moving_mean", mean_moving_normal)
sess = tf.Session()
writer = tf.summary.FileWriter("/tmp/histogram_example")
summaries = tf.summary.merge_all()
# 设置一个循环并将摘要写入磁盘
N = 400
for step in range(N):
    k_val = step/float(N)
    summ = sess.run(summaries, feed_dict={k: k_val})
    writer.add_summary(summ, global_step=step)

模式:

  • 两种模式:OFFSET模式和OVERLAY模式
  • OFFSET模式:其中,横轴表示值,纵轴表示数量,每个切片显示一个直方图,切片按步骤(步数或时间)排列;旧的切片较暗,新的切片颜色较浅.如图,可以看到在第393步时,以4.91为中心的bin中有161个元素.
    tensorflow中TensorBoard用法:_第5张图片
  • OVERLAY模式:其中,横轴表示值,纵轴表示数量.各个直方图切片不再展开,而是全部绘制在相同的y轴上.这样不同的线表示不同的步骤(步数或时间).如图,可以看到在第5步时,以0.11为中心的bin中有183个元素.OVERLAY模式用于直接比较不同直方图的计数
    tensorflow中TensorBoard用法:_第6张图片

Merge(合并summary)

  • 使用 tf.summary.merge(inputs, collections=None, name=None) 对指定的汇总进行合并。tf.summary.merge([summary变量列表])
  • 使用 tf.summaries.merge_all(key=_ops.GraphKeys.SUMMARIES)对所有的汇总进行合并;tf.summaries.merge_all()

Write(将summary写入文件):

  • 使用函数tf.summary.FileWriter对象的add_summary方法将合并的summary写入文件。
  • 函数原型:add_summary(summary,global_step=None)

你可能感兴趣的:(Tensorflow,API,学习)