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])))