Я пытаюсь вручную рассчитать точность и точность моей модели 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
Это правильный способ расчета точности?
Любая помощь приветствуется.
precision
, на которую вы ссылались, используется для случая с несколькими метками (как это было упомянуто в его строке документации). - person today   schedule 18.09.2018metrics=['accuracy']
при компиляции модели. Затем, если вы хотите оценить свою модель на новых тестовых данных, вы можете использовать методevaluate
. . Поскольку вы использовали'accuracy'
в качестве метрики, одним из результатов методаevaluate
будет точность модели. Прочитайте документы и этот ответ для получения дополнительной информации. - person today   schedule 18.09.2018binary_crossentropy
как потеря? Вы не выполняете классификацию по нескольким меткам, так почемуbinary_crossentropy
? И, возможно, вы использовалиsigmoid
как активацию последнего слоя? - person today   schedule 19.09.2018