Я пытаюсь вручную вычислить точность и точность моей модели Keras.Я посмотрел на функцию metrics.py, и у нее есть приведенный ниже код для вычисления точности.
def precision(y_true, y_pred):
'''Calculates the precision, a metric for multi-label classification of
how many selected items are relevant.
'''
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
precision = true_positives / (predicted_positives + K.epsilon())
return precision
Чего я не понимаю, так это почему мы должны делать y_true * y_pred, чтобы получить истинные положительные результаты?Мой y_pred - это вектор длины 7, в котором есть вероятность для каждого пикселя в моем изображении, а мой y_true - это закодированный вектор длиной в одну горячую точку 7. Может ли кто-нибудь помочь мне понять y_true * y_pred при вычислении истинных положительных значений.
Также, используя приведенную выше функцию точности в качестве эталона, я использую приведенную ниже пользовательскую функцию для точности.
def overall_acc(y_true, y_pred):
y_true_2D = K.max(y_true, axis=1, keepdims=False)
y_pred_2D = K.max(y_true*y_pred, axis=1, keepdims=False)
y_true_f = K.sum(K.flatten(y_true_2D))
y_pred_f = K.sum(K.flatten(y_pred_2D))
acc = y_pred_f / (y_true_f)
return acc
Это правильный способ расчета точности?
Любая помощь с благодарностью.