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 !
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)
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.