0
は、以下の単純化されたコードと仮定する:tf.assignはテンソルフローのグラジエントをどのように計算しますか?
x = tf.Variable(...)
y = tf.Variable(...) # y can also be some tensor computed from other variables
x_new = tf.assign(x, y)
loss = x_new * x_new
私は損失を最適化する場合、損失の勾配はxまたはyに逆伝播されませんか?
はご説明をいただき、ありがとうございます。しかし、私はまだ混乱しています。 tf.gradients(x_new、[x、y])は[None、None]ですが、x_newとxは両方とも同じ変数/パラメータを参照します([assign op](https://github.com/tensorflow /tensorflow/blob/master/tensorflow/core/ops/state_ops.cc)はref型です)。最適化の間、xとx_newからのグラジエントは一緒に累積され、基礎となるパラメータを更新するか? – x10000year
いいえ、x_newとxは異なるものを示します。 xは変数を指し、x_newはxとyを入力とするassign_opを指します。推奨される議論のように、このオペレーションはグラディエントを入力に逆伝播しません。したがって、xとx_newの勾配は一緒に蓄積されません。それは理にかなっていますか? – Mingxing