Неверный результат tf.gradients () - Tensorflow - PullRequest
0 голосов
/ 21 марта 2020
a = tf.Variable([1,0.5],dtype=tf.float32)
b = tf.Variable([1,3],dtype=tf.float32)
c = a*b
d = tf.Variable([1,1],dtype=tf.float32)

sess = tf.Session()
sess.run(a.initializer)
sess.run(b.initializer)
sess.run(d.initializer)

cost = tf.nn.softmax_cross_entropy_with_logits_v2(logits=c, labels=d)
grd = tf.gradients(cost,[a])
sess.run(tf.gradients(grd,[d]))

Ожидается [-0,6224593, -1,132622], но получено [0,0]. Для любого a, b, d вы получите тот же результат [0,0].

UPD

Я заметил, что смешанные частные производные не равны. Почему?)

grd = tf.gradients(cost,[d])
print(sess.run(tf.gradients(grd,[a])))

grd = tf.gradients(cost,[a])
print(sess.run(tf.gradients(grd,[d])))
...