在Tensorflow中继续更改相同的变量

时间:2018-09-07 11:00:17

标签: python tensorflow

我有一个复杂的用例,我将其简化为仅增加Tensorflow中的变量。

.stick-to-me { padding-bottom:0px; min-height:137px; }
.stick-to-me .item { width:100%; height:100%; min-height:137px; position:absolute; top:0px; left:0px; }
.sticker { bottom:-50px; }

我的实际用例实际上是在每次调用我的自定义Keras层时都在特定条件下生成一个新的随机张量,但似乎归结为一个变量,如果我对其执行任何操作,则会变成张量。是正确的用例来包装每个a = tf.Variable(1, trainable=False) b = tf.constant(2) a = tf.assign_add(a, b) In [32]: type(a) Out[32]: tensorflow.python.framework.ops.Tensor 并在每次调用我的keras层时更改a = tf.Variable(tf.assign(a, b))吗?

1 个答案:

答案 0 :(得分:1)

您想得太多。 tf.assign_add返回添加到变量的op。它也返回结果值的事实只是为了方便-变量 受到了影响。

示例:

import tensorflow as tf

a = tf.Variable(1, trainable=False)
b = tf.constant(2)
c = tf.assign_add(a, b)

sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
print(sess.run(a))
# 1: the original value
print(sess.run(c))
# 3: the result of the addition
print(sess.run(a))
# 3: OK, the variable has indeed been added to