【发布时间】:2021-03-18 18:00:37
【问题描述】:
我正在尝试针对在 tf.function 中的循环内定义的一些变量计算梯度,但是我总是得到 None 结果。这是一个复制问题的基本示例:
@tf.function
def problem():
test = tf.constant(1.0)
with tf.GradientTape() as tape:
for i in tf.range(5):
test1 = test
tape.watch(test1)
test2 = test1
grad = tape.gradient(test2, test1)
return grad
print(problem()) #None
当然,在这种特殊情况下,我什至不需要循环。但是,在更一般的情况下,我想在循环期间将 test1 变量(可能还有其他变量)存储在 TensorArray (或类似结构)中,然后计算相对于这些变量的梯度。这可能吗?
【问题讨论】: