Tensorflow:如何正确分配变量

时间:2017-01-31 18:45:43

标签: variables tensorflow

它与How to assign value to a tensorflow variable?

不重复

我试图做最简单的事情:只需交换变量Tensorflow: how to swap variables between scopes and set variables in scope from another,  我仍然无法做到。

但现在我知道assign甚至会更改张贴的副本tf.identity。我不想要这个。我需要复制变量进行交换。

In [10]: a = tf.Variable(1)

In [11]: b = tf.identity(a)

In [12]: a += 1

In [14]: sess.run(a)
Out[14]: 2

In [15]: sess.run(b)
Out[15]: 1

In [16]: a = tf.Variable(1)

In [17]: b = tf.identity(a)

In [18]: assign_t = a.assign(2)

In [20]: sess.run(tf.initialize_all_variables())

In [21]: sess.run(a)
Out[21]: 1

In [22]: sess.run(assign_t)
Out[22]: 2

In [23]: sess.run(a)
Out[23]: 2

In [24]: sess.run(b)
Out[24]: 2

如何在不更改a的情况下为b分配值?

1 个答案:

答案 0 :(得分:1)

tf.identity()操作是无状态的。当您有一个名为tf.Variable的{​​{1}}时,a的值将始终与tf.identity(a)的值相同。如果您希望a记住以前的b值,则应将a创建为b

tf.Variable