什么是"参考边缘"在TensorBoard?

时间:2017-06-03 16:00:37

标签: graph tensorflow tensorboard

TensorBoard用户界面显示了一个名为"参考边缘"与数据流(Tensor)边缘不同:

enter image description here

前者与后者的区别是什么?

文档说"传出操作节点可以改变传入的张量",但表示不符合UI的不同符号,因此很难说出什么&#39 ; s意思是"传入"和"传出":

enter image description here

例如,该定义如何适用于

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

enter image description here

在这两种情况下,似乎参考边缘表示其尾部填充边缘所代表的Tensor的值。

3 个答案:

答案 0 :(得分:2)

我在图表上看不到任何参考边缘,但是您可以轻松获得一条参考边缘:

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并从主图表中删除它时,您会看到参考边缘:

enter image description here

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

  

ref:一个可变的Tensor

因此TF添加了一个参考边,其中操作读取前一个值,执行某些操作并使用新值重写它。类比很可能是指针/参考。所以doc有意义:

  

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

答案 1 :(得分:0)

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

我们可能需要指望真正了解javascript的人通过查看tensorboard的源代码来弄清楚其工作原理。

enter image description here enter image description here

答案 2 :(得分:0)

这是一个混乱的来源even to DeepMind developers,正在fixed in future releases,所以:

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