修改 Tensorflow 常数 Tensor

1 python tensorflow

我在谷歌上搜索并知道 Tensorflow 的constant()函数会生成一个恒定的张量(大惊喜!)并且无法修改。

但是当我这样做时:

>>> a = tf.constant(0.0)
>>> a = a + 1.0
Run Code Online (Sandbox Code Playgroud)

我没有看到 Tensorflow 产生的任何错误。

我明白了原因,a现在是一个新的张量操作Add<tf.Tensor 'add_1:0' shape=() dtype=float32>)。

我的问题是,constant如果我们可以修改它,Tensorflow有什么用?它与图形优化有什么关系吗?我在这里错过了一些微不足道的东西吗?

提前致谢。

nes*_*uno 5

是的,你错过了一些微不足道的东西。

 a = tf.constant(0.0)
Run Code Online (Sandbox Code Playgroud)

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

a = a + 1.0
Run Code Online (Sandbox Code Playgroud)

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

因此,在这一行中,您将覆盖一个 python 变量以使其包含一个add节点:您没有接触图形节点的值constant:0

常量,实际上是在tensorflow描述的图中定义的,不能改变。相反,您可以更改的是指向图中某个节点的 python 变量。

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