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