Tensorflow: tf.argmax sollte Backprop nicht zulassen

Erstellt am 30. Apr. 2016  ·  1Kommentar  ·  Quelle: tensorflow/tensorflow

Hallo Tensorflow,

In letzter Zeit habe ich die argmax-Funktion verwendet, aber ich habe immer einen tf.stop_gradient platziert, bevor ich sie verwendet habe. Wenn ich jedoch stop_gradient entferne, funktioniert Tensorflow immer noch einwandfrei.

Vielleicht verstehe ich etwas falsch, aber argmax ist keine differenzierbare Funktion. Wie funktioniert Backprop noch, wenn Sie es entfernen? Sollte kein Fehler ausgegeben werden, wenn Sie argmax ohne stop_gradient übergeben?

Wenn es möglich ist, argmax zu unterscheiden, würde ich mich über jede Ressource freuen, die zeigt, wie dies gemacht wird. Danke TF!

Hilfreichster Kommentar

Gradient wird fast überall definiert, könnte also in der Praxis definiert werden. Es ist jedoch nicht sehr nützlich, daher ist es für diese Operation in TensorFlow nicht registriert.

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)

>Alle Kommentare

Gradient wird fast überall definiert, könnte also in der Praxis definiert werden. Es ist jedoch nicht sehr nützlich, daher ist es für diese Operation in TensorFlow nicht registriert.

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)
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen