Tensorflow: tf.argmax no debería permitir backprop a través de él

Creado en 30 abr. 2016  ·  1Comentario  ·  Fuente: tensorflow/tensorflow

Hola Tensorflow,

Últimamente, he estado usando la función argmax pero siempre he colocado un tf.stop_gradient antes de usarla. Sin embargo, cuando elimino stop_gradient, tensorflow aún funciona bien.

Tal vez estoy malinterpretando algo, pero argmax no es una función diferenciable. ¿Cómo sigue funcionando el backprop cuando lo quitas? ¿No debería arrojarse un error cuando pasa argmax sin ningún stop_gradient?

Si es posible diferenciar argmax, agradecería enormemente cualquier recurso que muestre cómo se hace esto. Gracias TF!

Comentario más útil

El gradiente se define en casi todas partes, por lo que podría definirse en la práctica. Sin embargo, no es muy útil, por lo que no está registrado para esta operación en 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)

>Todos los comentarios

El gradiente se define en casi todas partes, por lo que podría definirse en la práctica. Sin embargo, no es muy útil, por lo que no está registrado para esta operación en 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)
¿Fue útil esta página
0 / 5 - 0 calificaciones