使用Tensorboard 分析cifar10 model
背景Tensorboard 是google推出了一个可视化分析TensorFlow graph 和 运行过程的工具: tensorboard on githubcifar10 model 是google发布了一个简单的基于cifar10 data的的模型: model on the githubTensorboard 的关键概念和APIsummary Ops: Tensorboard需要数据
·
背景
- 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
从上图可以看出,这个graph从string_input_producer 和 FixedLengthRecordReader开始,生成training需要使用的数据。这些数据(image,label)最后汇总到shuffle_batch,然后有三个node会使用这些数据:
* conv1: our CNN network.
* gradients: 计算gradient
* cross entropy: 计算cross entropy
cross entropy
Training nodes
为了避免graph过于复杂,tensorboard引入了auxiliary node的功能:一些高阶的节点,会被移到graph右边的auxiliary 区。training nodes就是被放在这边了,比如conv1。 我们可以点击conv1 左边或者右边的图标跳转到有链接的node上面
其他DashBoard
Scalar, etc
更多推荐
已为社区贡献1条内容
所有评论(0)