TensorBoard用户界面显示了一个名为"参考边缘"与数据流(Tensor
)边缘不同:
前者与后者的区别是什么?
文档说"传出操作节点可以改变传入的张量",但表示不符合UI的不同符号,因此很难说出什么&#39 ; s意思是"传入"和"传出":
例如,该定义如何适用于
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
的值。
答案 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
并从主图表中删除它时,您会看到参考边缘:
在TF中,运行时没有bidirectional edges。但有一些操作(如tf.assign_add
)通过修改它返回与输入之一相同的值:
ref:一个可变的Tensor
因此TF添加了一个参考边,其中操作读取前一个值,执行某些操作并使用新值重写它。类比很可能是指针/参考。所以doc有意义:
显示传出操作节点可以变异的参考边缘 传入的张量。
答案 1 :(得分:0)
在您显示的图表中,看起来只有连接到“read”运算符的边是无向的 - dataflow edge
,但是,您可以通过右键单击暂时断开read
节点,并且从主图中删除“。然后事实证明,边缘从数据流边缘(无向)转向参考边缘(有向),这没有多大意义。
我们可能需要指望真正了解javascript的人通过查看tensorboard的源代码来弄清楚其工作原理。
答案 2 :(得分:0)
这是一个混乱的来源even to DeepMind developers,正在fixed in future releases,所以: