【问题标题】:What is a "reference edge" in TensorBoard?TensorBoard 中的“参考边”是什么?
【发布时间】:2017-11-04 20:45:09
【问题描述】:

TensorBoard UI 显示了一种称为“参考边缘”的东西,与数据流 (Tensor) 边缘不同:

前者与后者有何区别?

文档说“传出操作节点可以改变传入张量”,但表示不同的符号与 UI 不匹配,因此很难区分“传入”和“传出”是什么意思:

例如,这个定义如何适用于

cs = tf.constant([1,2,3], name='const_share')
vs = tf.Variable([1,2,3], name='var_share')
tf.add(cs, vs, name='opVS1')
tf.add(vs, cs, name='opVS2')

或到

tf.add([4],[3], name='opA')

在这两种情况下,似乎只是参考边表明其尾部的值填充了边所代表的Tensor

【问题讨论】:

  • 我必须说我看不出这些插图的意义所在。至少在我看来,它们远没有对应的定义代码那么清晰。
  • @MaxB 对于大型图,它们可能是必不可少的,尤其是在早期设计阶段。

标签: graph tensorflow tensorboard


【解决方案1】:

我在您的图表上看不到任何参考边,但您可以通过以下方式轻松获得参考边:

import tensorflow as tf
a = tf.Variable(1, name="a")
b = a.assign_add(2)

with tf.Session() as sess:
    tf.summary.FileWriter('logs', sess.graph)
    sess.run(tf.global_variables_initializer())

当您单击a 并将其从主图中删除时,您将看到一条参考边:

在 TF 中,运行时没有 bidirectional edges。但是有一些操作(如tf.assign_add)通过修改它返回与输入之一相同的值:

ref: 可变张量

所以 TF 添加了一个参考边,该操作读取前一个值,做一些事情并用新值重写它。类比很可能是指针/引用。所以文档有点道理:

显示输出操作节点可以变异的参考边 传入的张量。

【讨论】:

  • “我在你的图表上看不到任何参考边”:所以 UI 中的键是错误的(文档中的键是正确的)?那么这一切都是有道理的,实际上。
  • @raxacoricofallapatorius 我不能肯定地说。但我一直认为双向边<->是参考边。
  • 是的,我认为文档是正确的,但不知何故,用户界面中的键将其全部混淆了。
  • 此时我可以看到有些是橙色的“参考边”,但有时会有双头灰色边。双头灰色边和橙色参考边有什么区别?
【解决方案2】:

在您显示的图表中,似乎只有连接到“读取”运算符的边是无向的 - dataflow edge,但是,您可以通过右键单击和“从主节点中删除”暂时断开 read 节点图形”。然后事实证明,边缘从数据流边缘(无向)变为参考边缘(有向),这没有多大意义。

我们可能需要依靠真正了解 javascript 的人通过查看 tensorboard 的源代码来弄清楚它是如何工作的。

【讨论】:

  • 嗯。这很奇怪。至少其中一些新的“参考”边缘实际上是对某些东西的参考(这对解释文档没有多大帮助,但至少“参考”这个词现在似乎有动机)。
【解决方案3】:

这是一个混乱的根源,even to DeepMind developersfixed in future releases,所以:

  1. 所有参考边都是不同的颜色(数据流边 和以前一样的灰色)。
  2. 指向所有数据流边缘的箭头,无论在哪里 他们指出(而不是只出现在数据流动的情况下 “向下”)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 2012-11-28
    • 1970-01-01
    • 2019-08-24
    • 2011-11-30
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多