嘿张量流,
最近,我一直在使用 argmax 函数,但我总是在使用它之前放置一个 tf.stop_gradient 。 但是,当我删除 stop_gradient 时,tensorflow 仍然可以正常工作。
也许我误解了一些东西,但 argmax 不是一个可微的函数。 删除后反向传播如何仍然有效? 在没有任何 stop_gradient 的情况下传递 argmax 时不应该抛出错误吗?
如果可以区分 argmax,那么我将非常感谢任何显示如何做到这一点的资源。 谢谢TF!
梯度几乎在任何地方都有定义,因此可以在实践中定义。 虽然它不是很有用,所以它没有在 TensorFlow 中注册这个操作。
x = tf.Variable([1., 1])
z = tf.argmax(x, 0)
sess = create_session()
xgrad = tf.gradients(z, x)
sess.run(tf.initialize_all_variables())
sess.run(xgrad)
LookupError: No gradient defined for operation 'ArgMax' (op type: ArgMax)
最有用的评论
梯度几乎在任何地方都有定义,因此可以在实践中定义。 虽然它不是很有用,所以它没有在 TensorFlow 中注册这个操作。