Tensorflow:在 tf.gradients() 期间忽略特定依赖项
Tensorflow: ignore a specific dependency during tf.gradients()
给定变量 y 和 z,这两个变量都依赖于张量 x。根据产品规则,如果我做 tf.gradients(yz,x),它会给我 y'(x)z(x) + z'(x)y(x)。有没有一种方法可以将 y 指定为相对于 x 的常数,这样 tf.gradients(yz,x) 只给我 z'(x)y(x)?
我知道 y_=tf.constant(sess.run(y)) 会给我 y 作为常量,但我不能在我的代码中使用该解决方案。
您可以使用 tf.stop_gradient() 来阻止反向传播。要在您的示例中阻止渐变:
y = function1(x)
z = function2(x)
blocked_y = tf.stop_gradient(y)
product = blocked_y * z
通过 product
反向传播后,反向传播将继续 z
而不是 y
。
给定变量 y 和 z,这两个变量都依赖于张量 x。根据产品规则,如果我做 tf.gradients(yz,x),它会给我 y'(x)z(x) + z'(x)y(x)。有没有一种方法可以将 y 指定为相对于 x 的常数,这样 tf.gradients(yz,x) 只给我 z'(x)y(x)?
我知道 y_=tf.constant(sess.run(y)) 会给我 y 作为常量,但我不能在我的代码中使用该解决方案。
您可以使用 tf.stop_gradient() 来阻止反向传播。要在您的示例中阻止渐变:
y = function1(x)
z = function2(x)
blocked_y = tf.stop_gradient(y)
product = blocked_y * z
通过 product
反向传播后,反向传播将继续 z
而不是 y
。