我已经用Google搜索并了解到Tensorflow的constant()
函数会产生一个恒定的Tensor(大惊喜!)并且无法修改。
但是当我这样做时:
>>> a = tf.constant(0.0)
>>> a = a + 1.0
我没有看到Tensorflow产生的任何错误。
我理解原因,a
现在是一个新的张量操作Add
(<tf.Tensor 'add_1:0' shape=() dtype=float32>
)。
我的问题是,如果我们可以修改它,Tensorflow constant
有什么用?它与图优化有什么关系吗?我在这里错过了一些小事吗?
提前致谢。
答案 0 :(得分:3)
a = tf.constant(0.0)
a
是一个python变量,它包含计算图的常量节点。在图表中,它有一个名称,我们称之为constant:0
。
a = a + 1.0
a
是一个 new python变量(赋值是破坏性操作),它保存在图中仍然定义的节点constant:0
和新的常量节点,在使用1.0
(constant_1:0
)时自动创建。
因此,在这一行中,您要覆盖一个python变量,以使其保持add
个节点:您不触及该值的值图节点constant:0
。
事实上,常数是在张量流描述的图形中定义的,并且它不能被改变。 相反,您可以更改的是指向图中某个节点的python变量。
您可以将python变量视为指向图形节点的指针。