Точность и точность в моделях Keras - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь вручную вычислить точность и точность моей модели 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

Это правильный способ расчета точности?

Любая помощь с благодарностью.

...