可视化学习Tensorboard

TensorBoard 涉及到的运算,通常是在训练庞大的深度神经网络中出现的复杂而又难以理解的运算。为了更方便 TensorFlow 程序的理解、调试与优化,发布了一套叫做 TensorBoard 的可视化工具。你可以用 TensorBoard 来展现你的 TensorFlow 图像,绘制图像生成的定量指标图以及附加数据。

数据序列化-events文件

TensorBoard 通过读取 TensorFlow 的事件文件来运行。TensorFlow 的事件文件包括了你会在 TensorFlow 运行中涉及到的主要数据。事件文件的生成通过在程序中指定tf.summary.FileWriter存储的目录,以及要运行的图

tf.summary.FileWriter('/tmp/summary/test/', graph=default_graph)

启动TensorBoard

要运行TensorBoard,请使用以下命令

tensorboard --logdir=path/to/log-directory

其中logdir指向其FileWriter序列化其数据的目录。如果此logdir目录包含从单独运行中包含序列化数据的子目录,则TensorBoard将可视化所有这些运行中的数据。一旦TensorBoard运行,浏览您的网页浏览器localhost:6006来查看TensorBoard

节点符号

下图给出了节点符号以及意义:

我们以下面代码来详细介绍一下整个主图的结构:

import tensorflow as tf

graph = tf.Graph()

with graph.as_default():
with tf.name_scope("name1") as scope:
a = tf.Variable([1.0,2.0],name="a")
with tf.name_scope("name2") as scope:
b = tf.Variable(tf.zeros([20]),name="b")
c = tf.Variable(tf.ones([20]),name="c")
with tf.name_scope("cal") as scope:
d = tf.concat([b,c],0)
e = tf.add(a,5) with tf.Session(graph=graph) as sess:
tf.global_variables_initializer().run()
# merged = tf.summary.merge_all()
summary_writer = tf.summary.FileWriter('/tmp/summary/test/', graph=sess.graph)
sess.run([d,e])

我们定义了三个名称域,分别为name1,name2和cal,我们可以清晰的从图中看出。

那么所有的常数、变量或者操作都在对应的名称域中,我们可以通过点击加号或者减号来查看详细内容。在name1中,有我们定义的变量a,依赖于初始化,并且也有对应的张量的阶。同样在name2中,有变量b和c。图中实线是我们整个程序的数据流向边。在cal名称域中,有两个运算操作,数据从前面两个名称域中流入。

一般来说,如果一个程序中名称域利用的好,可以使你的主图的结构更加清晰。反之,则会显得非常混乱

节点详细信息

我们每点击一个节点在整个tensorboard右上角会出现节点的详细信息。

上面会详细列出节点的子节点数、属性以及输入输出。

添加节点汇总操作

那么tensorboard还提供了另外重要的功能,那就是追踪程序中的变量以及图片相关信息,也就是可以一直观察程序中的变量值的变化曲线首先在构建计算图的时候一个变量一个变量搜集,构建完后将这些变量合并然后在训练过程中写入到事件文件中。

收集操作

  • tf.summary.scalar() 收集对于损失函数和准确率等单值变量
  • tf.summary.histogram() 收集高维度的变量参数
  • tf.summary.image() 收集输入的图片张量能显示图片

下面使用部分代码,说明了如何去收集变量并写入事件文件。

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_label, logits=y))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_label, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) tf.summary.scalar("loss",cross_entropy) tf.summary.scalar("accuracy", accuracy) tf.summary.histogram("W",W)

然后合并所有的变量,将这些信息一起写入事件文件中

# 合并
merged = tf.summary.merge_all()
summary_writer = tf.summary.FileWriter(FLAGS.summary_dir, graph=sess.graph) # 运行
summary = sess.run(merged) #写入
summary_writer.add_summary(summary,i)

通过运行tensorboard,我们可以看见这样的结果,很直观的显示了变量在训练过程中的变化过程。

可视化学习Tensorboard的更多相关文章

  1. Tensorflow学习笔记3:TensorBoard可视化学习

    TensorBoard简介 Tensorflow发布包中提供了TensorBoard,用于展示Tensorflow任务在计算过程中的Graph.定量指标图以及附加数据.大致的效果如下所示, Tenso ...

  2. 87、使用TensorBoard进行可视化学习

    1.还是以手写识别为类,至于为什么一直用手写识别这个例子,原因很简单,因为书上只给出了这个类子呀,哈哈哈,好神奇 下面是可视化学习的标准函数 ''' Created on 2017年5月23日 @au ...

  3. AI - TensorFlow - 可视化工具TensorBoard

    TensorBoard TensorFlow自带的可视化工具,能够以直观的流程图的方式,清楚展示出整个神经网络的结构和框架,便于理解模型和发现问题. 可视化学习:https://www.tensorf ...

  4. R语言可视化学习笔记之添加p-value和显著性标记

    R语言可视化学习笔记之添加p-value和显著性标记 http://www.jianshu.com/p/b7274afff14f?from=timeline   上篇文章中提了一下如何通过ggpubr ...

  5. Echart可视化学习集合

    一.基本介绍:ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.ECharts最初由百度团队开源,并于2018年初捐赠给Apache ...

  6. TensorBoard:可视化学习

    数据序列化 TensorBoard 通过读取 TensorFlow 的事件文件来运行.TensorFlow 的事件文件包括了你会在 TensorFlow 运行中涉及到的主要数据.下面是 TensorB ...

  7. 吴裕雄--天生自然深度学习TensorBoard可视化:命名空间

    # 1. 不同的命名空间. import tensorflow as tf with tf.variable_scope("foo"): a = tf.get_variable(& ...

  8. 88、使用tensorboard进行可视化学习,查看具体使用时间,训练轮数,使用内存大小

    ''' Created on 2017年5月23日 @author: weizhen ''' import os import tensorflow as tf from tensorflow.exa ...

  9. 吴裕雄--天生自然深度学习TensorBoard可视化:projector_MNIST

    import os import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data from te ...

随机推荐

  1. 20155207 2006-2007-2 《Java程序设计》第5周学习总结

    20155207 2006-2007-2 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 语法与继承架构 Java中的错误以对象方式呈现为 java.lang.Throwab ...

  2. C#浮点数保留位数

    C#浮点数保留位数 这里用String.Forma("{0:F}",x);来解决. 下面是试验和截图 using System; using System.Collections. ...

  3. 基于server broker 的数据实时更新

    Service Broker介绍:SQL Server Service Broker 为消息和队列应用程序提供 SQL Server 数据库引擎本机支持.这使开发人员可以轻松地创建使用数据库引擎组件在 ...

  4. Linux高级文本处理命令

    cut 一.cut命令 功能:cut命令可以从一个文本文件/文本流中提取文本列 语法: cut -d '分割字符' -f fields ##用于有特定分割字符 cut -c 字符区间 ##用于排列整齐 ...

  5. MySql初试

    初次使用MySql感觉有点不方便,习惯了使用MS Sql Server带来的便利,话不多说直接进入主题. 第一步.下载MySQL Community Server,下载地址:https://dev.m ...

  6. 寻找高边电流IC

    因为项目需要,无法使用地的电流检测,需要使用高边的电流检测 IC. 搜索的关键字: 高边 电流 高侧 电流 目前找到以下几款: INA199A1,来自参考方案,属于宽电压输入的. INA180B4ID ...

  7. 后台取IE的相关信息

    HttpBrowserCapabilities b = Request.Browser; Response.Write("浏览器名称和版本号:" + b.Type + " ...

  8. thinkphp 3.2.3在nginx+php下的url重写配置经验

    环境:centos7.2+lnmp1.3(nginx+php7.0+mysql5.5) 进入服务器配置路径:cd /usr/local/nginx/conf/nginx.conf 修改nginx.co ...

  9. 豆瓣源安装python包

    例如安装scrapy: pip install -i https://pypi.douban.com/simple/ scrapy

  10. linux 守护进程(daemon process)代码-详细注释

    1. 进程组 组长不能创建新的 会话. 其它进程可以创建新的会话,创建后既成为会话首领,同时失去控制终端. 2. 会话首领可以重新打开控制终端 1 #include <stdio.h> 2 ...