我试图了解tensorflow.gradient的工作方式。我尝试运行以下代码:
a = tf.constant([2,2,2])
b = 2*a
c=tf.constant([4,4,4])
print(b)
print(c)
g = tf.gradients(c, a)
g1 = tf.gradients(b, a)
with tf.Session() as sess:
print(sess.run(g1))
print(sess.run(g))
尽管b和c相同,但是g1产生正确的结果,但g没有给出任何结果。这是什么原因造成的?
答案 0 :(得分:0)
因为给定的张量未连接。 documentation恰好有一个与此有关的示例(带有错别字:-))
a = tf.ones([1, 2])
b = tf.ones([3, 1])
g1 = tf.gradients([b], [a], unnconnected_gradients='none')
sess.run(g1) # [None]
g2 = tf.gradients([b], [a], unconnected_gradients='zero')
sess.run(g2) # [array([[0., 0.]], dtype=float32)]