Привет, Тензорфлоу!
В последнее время я использую функцию argmax, но всегда помещал tf.stop_gradient перед ее использованием. Однако, когда я удаляю stop_gradient, тензорный поток по-прежнему работает нормально.
Может быть, я что-то неправильно понимаю, но argmax не является дифференцируемой функцией. Как backprop все еще работает, когда вы его удаляете? Разве не должна выдаваться ошибка, когда вы передаете argmax без stop_gradient?
Если можно дифференцировать argmax, то я был бы очень признателен за любой ресурс, показывающий, как это делается. Спасибо ТФ!
Градиент определен почти везде, поэтому его можно определить на практике. Однако это не очень полезно, поэтому оно не зарегистрировано для этой операции в 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)
Самый полезный комментарий
Градиент определен почти везде, поэтому его можно определить на практике. Однако это не очень полезно, поэтому оно не зарегистрировано для этой операции в TensorFlow.