【发布时间】:2017-10-22 15:50:42
【问题描述】:
我有一个自定义梯度计算函数,可以将传入的梯度加倍。
import tensorflow as tf
@tf.RegisterGradient("CustomSquare")
def _custom_square_grad(op, grad):
return grad*2.0
c = tf.constant(3.)
s1 = tf.square(c)
grad1 = tf.gradients(s1, c)[0]
g = tf.get_default_graph()
with g.gradient_override_map({"Square": "CustomSquare"}):
s2 = tf.square(c)
grad2 = tf.gradients(s2, c)[0]
with tf.Session() as sess:
print(sess.run([c, s1, grad1]))
print(sess.run([c, s2, grad2]))
我得到的结果令人惊讶:
[3.0, 9.0, 6.0]
[3.0, 9.0, 2.0]
我期待第二个结果是[3.0, 9.0, 12.0]。我错过了什么?
谢谢。
【问题讨论】:
标签: tensorflow backpropagation