Tensorflow: tf.argmax ne devrait pas autoriser Backprop à travers lui

Créé le 30 avr. 2016  ·  1Commentaire  ·  Source: tensorflow/tensorflow

Salut Tensorflow,

Dernièrement, j'ai utilisé la fonction argmax mais j'ai toujours placé un tf.stop_gradient avant de l'utiliser. Cependant, lorsque je supprime le stop_gradient, tensorflow fonctionne toujours correctement.

Peut-être que je comprends mal quelque chose, mais argmax n'est pas une fonction différentiable. Comment le backprop fonctionne-t-il toujours lorsque vous le supprimez ? Une erreur ne devrait-elle pas être générée lorsque vous passez argmax sans stop_gradient ?

S'il est possible de différencier argmax, j'apprécierais grandement toute ressource montrant comment cela est fait. Merci TF !

Commentaire le plus utile

Le dégradé est défini presque partout, il pourrait donc être défini dans la pratique. Ce n'est pas très utile cependant, il n'est donc pas enregistré pour cette opération dans 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)

>Tous les commentaires

Le dégradé est défini presque partout, il pourrait donc être défini dans la pratique. Ce n'est pas très utile cependant, il n'est donc pas enregistré pour cette opération dans 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)
Cette page vous a été utile?
0 / 5 - 0 notes