tf.stop_gradients似乎可以影响渐变的比例,我不知道如何停止。
import tensorflow as tf
ph = tf.placeholder(shape=(1,50), dtype=tf.float32)
var = tf.Variable(1, dtype=tf.float32)
v1 = ph * var
v1 = tf.stop_gradient(v1)
v2 = v1 + var
scaled_gradient = tf.gradients([v2], [var])
normal_gradient = tf.gradients([var], [var])
sess = tf.Session()
print(sess.run(scaled_gradient)) # Prints 50
print(sess.run(normal_gradient)) # Prints 1
我们可以看到,我停止了v1的梯度流,因此v2的梯度应为1。 因为我们只将变量添加到其中,而不将其相乘。 但是使用此设置后,渐变的比例将等于占位符中标量的数量。