0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TensorBoard:图的直观展示

Tensorflowers 来源:lp 2019-03-01 16:24 次阅读

TensorFlow 计算图功能十分强大,但也非常复杂。图的直观展示可帮助您理解图并对图进行调试。以下示例显示了实际的可视化效果。

TensorFlow 图的可视化效果。

要查看您自己的图,请运行 TensorBoard 并将其指向作业的日志目录,点击顶部窗格中的 “图” 标签,然后使用左上角的菜单选择适当的运行条目。要深入了解如何运行 TensorBoard 并确保记录所有必要信息,请参阅TensorBoard:直观展示学习。

名称范围和节点

典型的 TensorFlow 图可能具有数千个节点 — 数量过多,难以一次性查看,甚至难以使用标准图工具来进行布置。为了进行简化,可以对变量名称设定范围,然后,直观展示工具可以使用此信息来为图中的节点定义层次结构。默认情况下仅显示该层次结构的顶层。以下示例使用tf.name_scope在hidden名称作用域下定义了三个操作:

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')

这导致出现以下三个 op 名称:

hidden/alpha

hidden/weights

hidden/biases

默认情况下,直观展示工具会将这三个名称收起到一个标作hidden的节点中。其他详细信息不会丢失。您可以双击节点或点击右上角的橙色+符号以展开节点,然后您将看到alpha、weights和biases三个子节点。

以下真实示例展示了一个更加复杂的节点的初始状态和展开状态。

顶级名称范围pool_1的初始视图。点击右上角的橙色+按钮或双击节点本身即可展开该节点

pool_1名称范围的展开视图。点击右上角的橙色-按钮或双击节点本身即可收起该名称范围

要让图易于观看,按名称范围对节点进行分组至关重要。如果您要构建模型,名称范围可帮助您控制生成的直观展示。您的名称范围越好,直观展示的效果也就越棒。

上图显示了直观展示的另一方面。TensorFlow 图具有两种连接:数据依赖关系和控制依赖关系。数据依赖关系显示两个 op 之间的张量流动,该依赖关系显示为实线箭头,而控制依赖关系显示为虚线。在展开视图中(上图右侧),所有连接均为数据依赖关系,只有连接CheckNumerics和control_dependency的虚线除外。

还有一个技巧可以简化布局。大多数 TensorFlow 图都包含几个连接至许多其他节点的节点。例如,许多节点可能对初始化步骤存在控制依赖关系。绘制init节点及其依赖项之间的所有边缘时,会产生极为杂乱的视图。

为了减轻杂乱,直观展示工具会将所有高等级节点划分到右侧的辅助区域中,并且不绘制线来表示它们的边缘。我们不使用线而使用节点图标来表示连接。分出辅助节点时通常不会移除关键信息,因为这些节点通常与簿记函数相关。请参阅下方交互部分,了解如何在主图和辅助区域之间移动节点。

节点conv_1连接到save。请注意它右侧的save节点小图标

save的级别较高,它将显示为辅助节点。与conv_1的连接显示为左侧的节点图标。为了进一步减轻杂乱,由于save有许多连接,我们仅显示前 5 个连接,并将其余连接缩写为... 12 more

最后一种结构简化方法是序列收起。如下所示,序列模体 (motif)(即结构相同但名称末尾的数字不同的节点)将收起到节点的单个层叠中。对于具有长序列的网络,这极大地简化了视图。对于具有层次结构的节点,双击即可展开序列。请参阅下方交互部分,了解如何为一组特定的节点停用/启用序列收起。

节点序列收起后的视图

双击后显示的展开视图的一小部分内容

直观展示工具为了改进易读性而采取的最后一项辅助措施是:为常量和总结节点使用特殊图标。下表对节点符号进行了总结:

交互

通过平移和缩放在图中导航。点击并拖动可进行平移,使用滚动手势可进行缩放。双击节点或点击它的+按钮可展开代表一组指令的名称范围。为了在缩放和平移时轻松跟踪当前视点,右下角提供了一个小地图。

要关闭打开的节点,请再次双击节点或点击它的 — 按钮。您也可以点击一次以选择一个节点。该节点的颜色将加深,其相关详细信息及与其连接的节点将显示在直观展示工具右上角的信息卡上。

显示了conv2名称范围的相关详情的信息卡。输入和输出是从名称范围内的指令节点的输入和输出合并而来。没有显示名称范围的属性

显示了DecodeRaw指令节点的详细信息的信息卡。除了输入和输出以外,该卡还显示与当前指令关联的设备和和属性

TensorBoard 提供了数种方法来改变图的视觉布局。这不会改变图的计算语义,但可让网络结构变得更加清晰。通过右键点击节点或按下节点信息卡底部的按钮,您可以对它的布局做出以下更改:

您可在主图和辅助区域之间移动节点

您可以对一系列节点取消分组,使得序列中的节点不以分组的形式显示。您同样可以对取消分组的序列进行重新分组

选中节点也有助于您理解高级别节点。请选择任意高级别节点,随后该节点的其他连接所对应的节点图标也将被选中。此操作可帮助您轻松了解正在保存哪些节点,以及没有保存哪些节点。

点击信息卡中的节点名称即可选中该节点。如有必要,视点将自动平移以便使节点显示出来。

最后,您可以使用图例上方的颜色菜单为您的图选择两种配色方案。默认的结构视图显示了结构:当两个高级别节点具有相同的结构时,它们将显示相同的彩虹色。具有独特结构的节点显示为灰色。第二个视图显示运行不同指令的设备。名称范围根据其内部指令的设备比例来按比例着色。

下图显示了一个真实图的一部分的图解。

结构视图:灰色节点具有独特的结构。橙色conv1和conv2节点具有相同的结构,其他颜色相同的节点同样如此

设备视图:名称范围根据其内部指令节点的设备比例来按比例着色。此处的紫色代表 GPU,绿色代表 CPU

张量形状信息

当序列化GraphDef包含张量形状时,图可视化工具会使用张量维度来标记边缘,而边缘厚度反映总张量大小。要在GraphDef中包括张量形状,请在对图执行序列化时,将实际图对象(如sess.graph中所示)传递到FileWriter。下图显示了包含张量形状信息的 CIFAR-10 模型:

包含张量形状信息的 CIFAR-10 模型

运行时统计信息

通常,收集运行的运行时元数据(例如节点的总内存使用量、总计算时间和张量形状)很有用。以下代码示例节选自修改版Estimator MNIST 教程的训练和测试部分,在该代码段中,我们记录了汇总和运行时统计信息。请参阅汇总教程 以详细了解如何记录汇总。要查看完整的源代码,请点击此处(https://github.com/tensorflow/tensorflow/blob/r1.10/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py)。

# Train the model, and also write summaries. # Every 10th step, measure test-set accuracy, and write test summaries # All other steps, run train_step on training data, & add training summaries def feed_dict(train): """Make a TensorFlow feed_dict: maps data onto Tensor placeholders.""" if train or FLAGS.fake_data: xs, ys = mnist.train.next_batch(100, fake_data=FLAGS.fake_data) k = FLAGS.dropout else: xs, ys = mnist.test.images, mnist.test.labels k = 1.0 return {x: xs, y_: ys, keep_prob: k} for i in range(FLAGS.max_steps): if i % 10 == 0: # Record summaries and test-set accuracy summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False)) test_writer.add_summary(summary, i) print('Accuracy at step %s: %s' % (i, acc)) else: # Record train set summaries, and train if i % 100 == 99: # Record execution stats run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE) run_metadata = tf.RunMetadata() summary, _ = sess.run([merged, train_step], feed_dict=feed_dict(True), options=run_options, run_metadata=run_metadata) train_writer.add_run_metadata(run_metadata, 'step%d' % i) train_writer.add_summary(summary, i) print('Adding run metadata for', i) else: # Record a summary summary, _ = sess.run([merged, train_step], feed_dict=feed_dict(True)) train_writer.add_summary(summary, i)

此代码将从第 99 步开始,每隔 100 步发出一次运行时统计。

当您启动 TensorBoard 并转至 “图” (Graph) 标签时,您现在将在 “会话运行” (Session runs)(与添加了运行元数据的步对应)下看到一些选项。选择其中一个运行后,系统将为您显示该步时的网络快照,并将未使用的节点显示为淡出。在左侧的控件中,您将能够按总内存或总计算时间为节点着色。此外,点击节点可显示确切的总内存量、计算时间和张量输出大小。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 可视化
    +关注

    关注

    1

    文章

    1194

    浏览量

    20936
  • tensorflow
    +关注

    关注

    13

    文章

    329

    浏览量

    60528

原文标题:TensorBoard:图的直观展示

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    因为这种主题可以让用户直观的通过主题的预览来吸引...

    的同时引导浏览者去点击购买,所以我们要选择图片展示类的主题,因为这种主题可以让用户直观的通过主题的预览来吸引用户浏览下去。2. 固定链接的设置因为我们希望通过“主题名 + Download”这类关键词来
    发表于 05-23 19:53

    成功解决tensorboard调用eventsouttfevents文件得到网址出现No dashboards are active for the current data set问题

    成功解决tensorboard调用eventsouttfevents文件得到网址出现No dashboards are active for the current data set问题
    发表于 12-21 10:42

    TF之Tensorboard实践:将神经网络Tensorboard形式得到eventsouttfevents文件+dos内运行该文件本地服务器输出到网页可视化

    TF:TF之Tensorboard实践:将神经网络Tensorboard形式得到eventsouttfevents文件+dos内运行该文件本地服务器输出到网页可视化
    发表于 12-21 10:43

    TF之CNN:利用sklearn使用dropout解决学习中overfitting的问题+Tensorboard显示变化曲线

    TF之CNN:利用sklearn(自带手写图片识别数据集)使用dropout解决学习中overfitting的问题+Tensorboard显示变化曲线
    发表于 12-24 11:36

    Tensorflow之Tensorboard的可视化使用

    TF之Tensorboard:Tensorflow之Tensorboard可视化使用之详细攻略
    发表于 12-27 10:05

    TensorFlow TensorBoard可视化数据流

    TensorBoard:接下来,打开浏览器并输入地址 http://localhost:6006/(或运行 TensorBoard 命令后收到的链接)。你会看到类似于 1 中的
    发表于 07-22 21:26

    机械展示、认识与分析直观现场教学

    实验五 机械展示、认识与分析直观现场教学 一、实验目的了解各零部件的结构和工作原理,增加感性认识,巩固课堂教学。
    发表于 03-13 19:00 2022次阅读

    40个动,教你直观的体会什么是电磁场

    电磁场和电流是高二也是整个高中最难的知识点,很多同学对场没有一个直观的概念,今天这40个动,教你直观的体会什么是电磁场。
    的头像 发表于 08-25 16:28 5774次阅读
    40个动<b class='flag-5'>图</b>,教你<b class='flag-5'>直观</b>的体会什么是电磁场

    环境监控平台的功能介绍

    平台界面应可以直观展示该地区的环境信息、全市因子平均值、有关监测设备的实时信息及设备列表等情况。
    发表于 04-19 09:23 962次阅读

    使用TensorBoard进行机器学习模型分析

      总体而言,TensorBoard 是帮助开发和培训过程的绝佳工具。Scalar and Metrics、Image Data 和 Hyperparameter 调优的数据有助于提高准确性,而 profiling 工具有助于提高处理速度。
    发表于 06-27 11:41 895次阅读
    使用<b class='flag-5'>TensorBoard</b>进行机器学习模型分析

    使用TensorBoard进行机器学习模型分析

      总体而言,TensorBoard 是帮助开发和培训过程的绝佳工具。Scalar and Metrics、Image Data 和 Hyperparameter 调优的数据有助于提高准确性,而 profiling 工具有助于提高处理速度。
    的头像 发表于 07-01 09:44 818次阅读
    使用<b class='flag-5'>TensorBoard</b>进行机器学习模型分析

    使用TensorBoard进行机器学习模型分析

      总体而言,TensorBoard 是帮助开发和培训过程的绝佳工具。Scalar and Metrics、Image Data 和 Hyperparameter 调优的数据有助于提高准确性,而 profiling 工具有助于提高处理速度。
    发表于 07-10 09:40 333次阅读
    使用<b class='flag-5'>TensorBoard</b>进行机器学习模型分析

    使用TensorBoard的机器学习模型分析

    差异变得至关重要。TensorBoard 有助于可视化模型,使分析变得不那么复杂,因为当人们可以看到问题所在时,调试变得更加容易。
    的头像 发表于 11-22 16:30 497次阅读

    TensorBoard的使用

    原文链接 简介 TensorBoard是TensorFlow自带的一个强大的可视化工具,也是一个Web应用程序套件。 使用 进入保存节点目录,输入: tensorboard --logdir
    的头像 发表于 01-12 17:35 2415次阅读

    3D可视化威廉希尔官方网站 如何让城市规划信息更直观展现?

    城市规划是一个复杂而又多变的过程,需要考虑众多因素,如地形、气候、经济、人口等。传统的城市规划信息展示方式主要是通过平面、立面等二维图像来呈现城市规划的方案和效果,难以全面展示城市
    的头像 发表于 05-12 15:23 485次阅读