Почему `tf.reduce_mean` используется при вычислении точности логистической регрессии?

#python #tensorflow #machine-learning #keras #logistic-regression

#питон #тензорный поток #машинное обучение #keras #логистическая регрессия

Вопрос:

Следующая функция предназначена для вычисления точности логистической регрессии, но какой смысл использовать reduce_mean function в этой функции?

Код таков:

 import tensorflow as tf    
def accuracy(y_pred, y_true):
        # Predicted class is the index of the highest score in prediction vector (i.e. argmax).
    
        correct_prediction = tf.equal(tf.argmax(y_pred, 1), tf.cast(y_true, tf.int64))
    
        return tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
 

Ответ №1:

Прежде всего, обратите внимание, что функции метрики или потерь обычно ожидают пакет меток прогнозирования / true в качестве входных данных. Теперь каждый элемент correct_prediction True равен, если соответствующее предсказание верно; в противном случае это так False . Затем tf.cast(correct_prediction, tf.float32) преобразуйте True значения в 1, а False значения — в 0. Таким образом, вычисление среднего (т. Е. Среднего) значения было бы эквивалентно точности прогнозов (хотя и в виде значения в диапазоне [0,1], а не в процентах).

Чтобы еще больше прояснить это, рассмотрим следующее:

 >>> correct_prediction
[True, False, False, True, True]    # 3 out of 5 predictions are correct

>>> tf.cast(correct_prediction, tf.float32)
[1, 0, 0, 1, 1]

>>> tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
0.6    # it means 60% accuracy which is what we expected