Зачем нам нужен tf.arg_max(Y,1) с softmax в тензорном потоке?

Когда я пишу демо тензор потока, я нахожу это arg_max() функция в определении correct_predition

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(
            logits=hypothesis,labels=Y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)

correct_prediction = tf.equal(tf.arg_max(hypothesis,1),tf.arg_max(Y,1))

Возвращает индекс с наибольшим значением по осям тензора. (это из API от TF)

ибо мы используем softmax_cross_entropy_with_logits ",

прогноз (hypothesis) представлены как вероятность

мы получим индекс наибольшей вероятности предсказания arg_max() функция для hypothesis

но Y это ярлыки, это не вероятность, почему мы должны использовать tf.arg_max(Y,1)?

1 ответ

Решение

arg_max(гипотеза) возвращает ИНДЕКС. Y - один горячий вектор длины 10. tf.equal() не может сделать ничего разумного, потому что эти две вещи несовместимы.

Итак, arg_max(Y) возвращает INDEX. Теперь tf.equal() может сделать разумную вещь: 1, если прогноз соответствует цели, 0 в противном случае.

Обратите внимание, что arg_max() - это не функция о вероятностях: это просто функция, возвращающая индекс самого большого элемента.

Другие вопросы по тегам