2017-10-27 6 views

答えて

0

一般に、このdiscussionでは、割り当てopのかなり良い説明があります。あなたの具体的な質問については、損失の勾配はxまたはyに戻って、伝播されません

# Your example. 
tf.gradients(x_new * x_new, [x, y]) #output: [None, None] 

# Some other related examples. 
tf.gradients(x_new * y, [x, y]) #output: [None, x_new_value] 
tf.gradients(x * x_new, [x, y]) #output: [x_new_value, None] 
+0

はご説明をいただき、ありがとうございます。しかし、私はまだ混乱しています。 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

+0

いいえ、x_newとxは異なるものを示します。 xは変数を指し、x_newはxとyを入力とするassign_opを指します。推奨される議論のように、このオペレーションはグラディエントを入力に逆伝播しません。したがって、xとx_newの勾配は一緒に蓄積されません。それは理にかなっていますか? – Mingxing

関連する問題