したがって、ここでは間接的な変更は機能しないと述べています。つまり、変更は目に見えないということです (目に見えない変更とはどういう意味ですか?)
しかし、このコードは勾配を正しく計算します:
import tensorflow as tf
class C:
def __init__(self):
self.x = tf.Variable(2.0)
@tf.function
def change(self):
self.x.assign_add(2.0)
@tf.function
def func(self):
self.change()
return self.x * self.x
c = C()
with tf.GradientTape() as tape:
y = c.func()
print(tape.gradient(y, c.x)) # --> tf.Tensor(8.0, shape=(), dtype=float32)
ここで何か不足していますか?
ありがとう