使用Tensorboard 分析cifar10 model

来源:互联网 发布:淘宝宝贝访客突然增加 编辑:程序博客网 时间:2024/05/16 16:04

背景

  • Tensorboard 是google推出了一个可视化分析TensorFlow graph 和 运行过程的工具: tensorboard on github
  • cifar10 model 是google发布了一个简单的基于cifar10 data的的模型: model on the github

Tensorboard 的关键概念和API

  • summary Ops: Tensorboard需要数据才能可视化和分析模型,所以我们在创建model的时候,需要利用summary Ops把我们需要显示的数据写相应的文件中,稍后Tensorboard会读取这些文件。
  • summary Ops 和tf.matmul, tf.relu 这些Ops是一样的,我们需要在graph中定义,然后在session中run,数据才会写到summary 文件中。这里有一个例子: mnist_with_summaries
  • tf.summary.FileWriter: 这个class提供了写入summary 的接口
    • add_event
    • add_graph
    • add_summary
  • 目前TensorBoard 支持的写入信息的Ops:
    • tf.summary.scalar
    • tf.summary.image
    • tf.summary.audio
    • tf.summary.text

写入summary的基本步骤

  • 定义summary ops, 比如: tf.summary.scalar, tf.summary.iamge, etc
  • 收集所有的summary ops(你也可以单独的run每一个summary ops, 但是让系统帮忙我们run所有的更方便): summary_op=tf.summary.merge_all()
  • 在session里面run刚刚通过 tf.summary.merge_all汇总的summary op: summary_op
  • 把summary_op运行的结果写入文件: tf.summary.FileWriter

TensorBoard 一些比较有用的功能

选择颜色模式(Tensorboard 最左边的color选项)

我暂时只用到这两种模式
* structure: 相同的结构的节点会以同样颜色出现
* device: 在相同设备上面运行的ops会以相同的颜色出现

Cifar10 model 中的summary Ops:

Training model: cifar10_train.py

  • Training model 没有自己调用 tf.summary.FileWriter 来写入信息。而是把这个事情交给 tf.train.MonitoredTrainingSession 来做的。MonitoredTrainningSession 有两个参数控制summary
    • save_summaries_steps:每隔多少training step,session写入summaries到默认的summary saver
    • save_summaries_secs: 每隔多少秒,session写入summaries到默认summary saver
  • images: cifar10_input.py/_generate_image_and_label_batch
    • 把每次产生的trainning batch 图片,显示三张在TensorBoard的image DashBoard
  • 函数_activation_summary:
    • 把model的每一层输出的tensor以一个histogram展示出来。
    • 计算model输出的zero fraction,然后把这个数字在scalar dashboard展示出来
  • 函数_add_loss_summaries:
    • 把loss 和 ExponentialMovingAverage 在 scalar dashboard上面展示出来。
    • 函数train(total_loss, global_step),在这个函数中,有一个for 循环,把所有的trainable variable, gradients 在histgram dashboard上面展示出来。
    • 还有一些tensorflow buit-in的函数会写入summaries,这个就不一个个分析了,比如:
    • tf.train.string_input_producer: 会写入一个名字为”fraction_of_%d_full” % capacity 的scalar

如何使用TensorBoard

命令:tensorboard –logdir=path/to/log-directory

  • logdir: 指向的路径是 tf.summary.FileWriter 写入log 的路径。
  • 如果这个路径下面包含了子文件夹,而这些子文件夹里面包含了不同training run 的日志,那么tensorboard会可视化所有的training run.
  • TensorBoard 默认的访问端口是:localhost:6006

Graph 分析

graph overview

这里写图片描述

data processing

data process node

从上图可以看出,这个graph从string_input_producer 和 FixedLengthRecordReader开始,生成training需要使用的数据。这些数据(image,label)最后汇总到shuffle_batch,然后有三个node会使用这些数据:
* conv1: our CNN network.
* gradients: 计算gradient
* cross entropy: 计算cross entropy

cross entropy

cross entropy

Training nodes

training nodes

为了避免graph过于复杂,tensorboard引入了auxiliary node的功能:一些高阶的节点,会被移到graph右边的auxiliary 区。training nodes就是被放在这边了,比如conv1。 我们可以点击conv1 左边或者右边的图标跳转到有链接的node上面

其他DashBoard

Scalar, etc

这里写图片描述

原创粉丝点击