关于python:修改Tensorflow常量Tensor

Modifying Tensorflow constant Tensor

我在谷歌上搜索了一下,才知道TensorFlow的constant()函数生成了一个常量张量(大惊喜!)不能修改。

但当我这样做的时候:

1
2
>>> a = tf.constant(0.0)
>>> a = a + 1.0

我看不到TensorFlow产生的任何错误。

我知道原因,a现在是一个新的张量运算Add()。

我的问题是,如果我们可以修改它,那么TensorFlowconstant的用法是什么?它与图形优化有什么关系吗?我是不是错过了一些小事?

事先谢谢。


是的,你错过了一些小事。

1
 a = tf.constant(0.0)

a是一个python变量,它保存着计算图的一个常量节点。在图中它有一个名字,我们称它为constant:0

1
a = a + 1.0

a是一个新的python变量(赋值是一个破坏性的操作),它保存了节点constant:0和一个新的常量节点之间的加法操作,使用1.0时(constant_1:0自动创建。

因此,在这一行中,您要重写一个python变量,以使它保存一个add节点:您没有触及图形节点constant:0的值。

事实上,这个常数是在TensorFlow描述的图中定义的,它是不可更改的。相反,您可以更改的是指向图中某个节点的python变量。

您可以将python变量看作指向图形节点的指针。