函数原型:
computer_gradients(loss,val_list)
- loss:损失函数,也即需要被优化的tensor
- val_list:需要求梯度的变量列表
简单示例:
w = tf.Variable(initial_value=10., dtype='float32')
y = w*w + 2
opt = tf.train.GradientDescentOptimizer(0.1)
grad = opt.compute_gradients(y, [w])
grad1 = tf.gradients(y, [w])
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(grad))
print(sess.run(grad1))
结果:
[(20.0, 10.0)]
[20.0]
分析:
y=w^2 + 2 ,则y’=2w,w的初始值为10,因此y’(10)=20
所以computer_gradients()函数返回的元组的第一个值表示y对w求导数的结果,第二个值表示w的值
而tf.gradients()则只会返回计算得到的梯度,而不会返回对应的variable。