本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权。

TensorFlow 图表计算强大而又复杂,图表可视化在理解和调试时显得非常有帮助。 下面是一个运作时的可式化例子。

"一个TensorFlow图表的可视化") 一个TensorFlow图表的可视化。

为了显示自己的图表,需将 TensorBoard 指向此工作的日志目录并运行,点击图表顶部窗格的标签页,然后在左上角的菜单中选择合适的运行。想要深入学习关于如何运行 TensorBoard 以及如何保证所有必要信息被记录下来,请查看 Summaries 和 TensorBoard.

名称域(Name scoping)和节点(Node)

典型的 TensorFlow 可以有数以千计的节点,如此多而难以一下全部看到,甚至无法使用标准图表工具来展示。为简单起见,我们为变量名划定范围,并且可视化把该信息用于在图表中的节点上定义一个层级。默认情况下, 只有顶层节点会显示。下面这个例子使用tf.name_scopehidden命名域下定义了三个操作:

import tensorflow as tfwith tf.name_scope('hidden') as scope:a = tf.constant(5, name='alpha')W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0), name='weights')b = tf.Variable(tf.zeros([1]), name='biases')

结果是得到了下面三个操作名:

  • hidden/alpha
  • hidden/weights
  • hidden/biases

默认地,三个操作名会折叠为一个节点并标注为hidden。其额外细节并没有丢失,你可以双击,或点击右上方橙色的+来展开节点,然后就会看到三个子节点alphaweightsbiases了。

这有一个生动的例子,例中有一个更复杂的节点,节点处于其初始和展开状态。

顶级名称域的初始视图pool_1,点击右上方橙色的+按钮或双击节点来展开。 展开的pool_1名称域视图,点击右上方橙色的-按钮或双击节点来收起此名称域。

通过名称域把节点分组来得到可读性高的图表很关键的。如果你在构建一个模型,名称域就可以用来控制可视化结果。你的名称域越好,可视性就越好。

上面的图像例子说明了可视化的另一方面, TensorFlow 图表有两种连接关系:数据依赖和控制依赖。数据依赖显示两个操作之间的tensor流程,用实心箭头指示,而控制依赖用点线表示。在已展开的视图(上面的右图)中,除了用点线连接的CheckNumericscontrol_dependency之外,所有连接都是数据依赖的。

还有一种手段用来简化布局。大多数 TensorFlow 图表有一部分节点,这部分节点和其他节点之间有很多连接。比如,许多节点在初始化阶段可能会有一个控制依赖,而绘制所有init节点的边缘和其依赖可能会创造出一个混乱的视图。

为了减少混乱,可视化把所有 high-degree 节点分离到右边的一个从属区域, 而不会绘制线条来表示他们的边缘。线条也不用来表示连接了,我们绘制了小节点图标来指示这些连接关系。分离出从属节点通常不会把关键信息删除掉,因为这些节点和内构功能是相关的。

节点conv_1被连接到save,注意其右边save节点图标。 save has a high degree, 并会作为从属节点出现,与conv_1的连接作为一个节点图标显示在其左边。为了继续减少杂乱,既然save有很多连接,我们则只显示前5个,而把其余的缩略为... 12 more

最后一个结构上的简化法叫做序列折叠(series collapsing)。 序列基序(Sequential motifs)是拥有相同结构并且其名称结尾的数字不同的节点,它们被折叠进一个单独的节点块(stack)中。对长序列网络来说,序列折叠极大地简化了视图,对于已层叠的节点,双击会展开序列。

一个节点序列的折叠视图。 视图的一小块, 双击后展开。

最后,针对易读性的最后一点要说到的是,可视化为常节点和摘要节点使用了特别的图标,总结起来有下面这些节点符号:

符号 意义
High-level节点代表一个名称域,双击则展开一个高层节点。
彼此之间不连接的有限个节点序列。
彼此之间相连的有限个节点序列。
一个单独的操作节点。
一个常量结点。
一个摘要节点。
显示各操作间的数据流边。
显示各操作间的控制依赖边。
引用边,表示出度操作节点可以使入度tensor发生变化。

交互

通过平移和缩放来导航图表,点击和拖动用于平移,滚动手势用于缩放。双击一个节点或点击其+按钮来展开代表一组操作的名称域。右下角有一个小地图可以在缩放和平移时方便的改变当前视角。

要关闭一个打开的节点,再次双击它或点击它的-按钮,你也可以只点击一次来选中一个节点,节点的颜色会加深,并且会看到节点的详情,其连接到的节点会在可视化右上角的详情卡片显现。

详情卡片展示conv2名称域的详细信息,名称域中操作节点的输入和输出被结合在一起,适用于不显示属性的名称域。 详情卡片展示DecodeRaw操作节点,除了输入和输出,卡片也会展示与当前节点相关的设备和属性。

选择对于 high-degree 节点的理解也很有帮助,选择任意节点,则与它的其余连接相应的节点也会选中,这使得在进行例如查看哪一个节点是否已保存等操作时非常容易。

点击详情卡片中的一个节点名称时会选中该节点,必要的话,视角会自动平移以使该节点可见。

最后,使用图例上方的颜色菜单,你可以给你的图表选择两个颜色方案。默认的结构视图下,当两个 high-level 节点颜色一样时,其会以相同的彩虹色彩出现,而结构唯一的节点颜色是灰色。还有一个视图则展示了不同的操作运行于什么设备之上。名称域被恰当的根据其中的操作节点的设备片件来着色。

下图是一张真实图表的图解:

结构视图:灰色节点的结构是唯一的。橙色的conv1conv2节点有相同的结构, 其他颜色的节点也类似。 设备视图:名称域根据其中的操作节点的设备片件来着色,在此紫色代表GPU,绿色代表CPU。

TensorFlow教程之进阶指南 3.4 TensorBoard: 图表可视化相关推荐

  1. TensorFlow 2.0 - Checkpoint 保存变量、TensorBoard 训练可视化

    文章目录 1. Checkpoint 保存变量 2. TensorBoard 训练过程可视化 学习于:简单粗暴 TensorFlow 2 1. Checkpoint 保存变量 tf.train.Che ...

  2. TensorFlow 教程 --进阶指南--3.3可视化学习

    TensorBoard:可视化学习 TensorBoard 涉及到的运算,通常是在训练庞大的深度神经网络中出现的复杂而又难以理解的运算. 为了更方便 TensorFlow 程序的理解.调试与优化,我们 ...

  3. TensorFlow 教程 --进阶指南--3.1总览

    综述 Overview Variables: 创建,初始化,保存,和恢复 TensorFlow Variables 是内存中的容纳 tensor 的缓存.这一小节介绍了用它们在模型训练时(during ...

  4. TensorFlow 教程 --进阶指南--3.9TensorBoard: 图表可视化

    TensorFlow 图表计算强大而又复杂,图表可视化在理解和调试时显得非常有帮助. 下面是一个运作时的可式化例子. "一个TensorFlow图表的可视化") 一个TensorF ...

  5. mxGraph进阶(一)mxGraph教程-开发入门指南

    mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适用于需要在网页中设计/编辑Workflow/BPM流程图.图表.网络图和普通图形的Web应用程序.mxgraph下载包中包括用 ...

  6. 进阶指南:如何编写可重用程序

    进阶指南:如何编写可重用程序¶ 这篇进阶指南从 Tutorial 7 结尾的地方继续讲起.我们将会把我们的 Web-poll 放进一个独立的 Python 包中,以便你在新的项目中重用它或将它与他人分 ...

  7. python进阶指南_Python特性工程动手指南

    python进阶指南 介绍 (Introduction) In this guide, I will walk through how to utilize data manipulating to ...

  8. TensorFlow 教程 --教程--2.7字词的向量表示

    在本教程我们来看一下Mikolov et al中提到的word2vec模型.该模型是用于学习文字的向量表示,称之为"word embedding". 亮点 本教程意在展现出在Ten ...

  9. TensorFlow 教程 --教程--2.5TensorFlow运作方式入门

    代码:tensorflow/g3doc/tutorials/mnist/ 本篇教程的目的,是向大家展示如何利用TensorFlow使用(经典)MNIST数据集训练并评估一个用于识别手写数字的简易前馈神 ...

最新文章

  1. webpack学习笔记
  2. Windows下配置Java开发环境
  3. JZOJ 5434. 【NOIP2017提高A组集训10.30】Matrix
  4. QT输入输出(四)之 QProcess
  5. 2020后半年iPhone取消附赠耳机?分析师上调AirPods出货量预估
  6. windows/browser ---- cmd命令/powershell命令/chrome插件vimuim命令
  7. robotlegs框架吴秦大师续讲【转载】
  8. 页面固定定位超出一屏
  9. 这视频里的人真是帅爆了!
  10. Android -- TabHost
  11. 遗传算法拟合函数(原理及Python实现)
  12. 端口已被占用1080
  13. 大数据导出excel大小限制_EXCEL大数据量导出的解决方案(转)
  14. 鲁迅吃鱼肝油都不忘战斗
  15. MATLAB不能打字,电脑不能打字怎么办?电脑打字打不出来解决方法汇总
  16. 微信小程序获取头像和昵称,头像圆角设置
  17. Windows10版本即将终止服务请立即重启
  18. Redis分片入门案例
  19. HTML爱心代码 | 《点燃我温暖你》中男主角——理工男李峋同款
  20. 网络爬虫-破解顶象滑块验证码

热门文章

  1. 论对一个程序的满意程度 | 每日趣闻
  2. 科技奥运再进一步,北京冬奥组委携手阿里云启动“云上转播”
  3. 并发编程之 源码剖析 线程池 实现原理
  4. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源
  5. C++开源代码项目汇总
  6. linux下压缩并分割稀疏文件
  7. 186. [USACO Oct08] 牧场旅行
  8. Flume NG 学习笔记(八)Interceptors(拦截器)测试
  9. jsonSuggest插件如何在使用前激活
  10. 六种方法实现CSS三栏布局