#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