我有一个复杂的用例,我将其简化为仅增加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))
吗?
答案 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