Modifying Tensorflow constant Tensor
我在谷歌上搜索了一下,才知道TensorFlow的constant()函数生成了一个常量张量(大惊喜!)不能修改。
但当我这样做的时候:
1 2
| >>> a = tf.constant(0.0)
>>> a = a + 1.0 |
我看不到TensorFlow产生的任何错误。
我知道原因,a现在是一个新的张量运算Add()。
我的问题是,如果我们可以修改它,那么TensorFlowconstant的用法是什么?它与图形优化有什么关系吗?我是不是错过了一些小事?
事先谢谢。
- 看看这个答案:stackoverflow.com/a/2174170/48000086
是的,你错过了一些小事。
a是一个python变量,它保存着计算图的一个常量节点。在图中它有一个名字,我们称它为constant:0。
号
a是一个新的python变量(赋值是一个破坏性的操作),它保存了节点constant:0和一个新的常量节点之间的加法操作,使用1.0时(constant_1:0自动创建。
因此,在这一行中,您要重写一个python变量,以使它保存一个add节点:您没有触及图形节点constant:0的值。
事实上,这个常数是在TensorFlow描述的图中定义的,它是不可更改的。相反,您可以更改的是指向图中某个节点的python变量。
您可以将python变量看作指向图形节点的指针。
- 啊,现在我明白了。我在问题中提到了"我理解原因,A现在是一个新的张量操作添加",但我没有看到张量流数据流图和python是两个不同的东西。谢谢你
- 是否有任何方法可以有意生成此错误?
- 你指的是什么错误?
- 是否有任何方法可以生成一个TensorFlow错误,说明"不能修改常量张量"?
- 您可以尝试将一个值赋给图中的常量张量。这将导致错误(因为常量对象没有assign属性)。只需尝试assign = tf.assign(a, 10.)和sess.run(assing)。程序将在类似的tf.assing(a,10)上崩溃,告诉您Tensor object has no attribute assign
- 知道了。谢谢您。