修改Tensorflow常量张量

时间:2017-10-17 09:08:43

标签: python tensorflow

我已经用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有什么用?它与图优化有什么关系吗?我在这里错过了一些小事吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

是的,你错过了一些微不足道的事情。

 a = tf.constant(0.0)

a是一个python变量,它包含计算图的常量节点。在图表中,它有一个名称,我们称之为constant:0

a = a + 1.0

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

因此,在这一行中,您要覆盖一个python变量,以使其保持add个节点:您触及该值的值图节点constant:0

事实上,常数是在张量流描述的图形中定义的,并且它不能被改变。 相反,您可以更改的是指向图中某个节点的python变量。

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