Как Keras рассчитывает точность?

26

Как Keras рассчитывает точность по классовым вероятностям? Например, у нас есть 100 образцов в тестовом наборе, которые могут принадлежать одному из двух классов. У нас также есть список классовых вероятностей. Какой порог использует Keras, чтобы назначить выборку любому из двух классов?

Raghuram
источник
вы используете model.evaluate в керасе?
Хима Варша
Да, я использую модель. Более конкретно, model.evaluate_generator.
Рагурам
Возможно связано @SO: Как Keras оценивает точность? )
пустыненав

Ответы:

24

Для двоичной классификации код метрики точности:

K.mean(K.equal(y_true, K.round(y_pred)))

что говорит о том, что 0,5 является порогом для различия между классами. y_true в этом случае, конечно, должен быть 1-hots.

Это немного отличается для категориальной классификации:

K.mean(K.equal(K.argmax(y_true, axis=-1), K.argmax(y_pred, axis=-1)))

что означает «как часто прогнозы имеют максимум в том же месте, что и истинные значения»

Существует также опция для категориальной точности top-k, которая аналогична приведенной выше, но рассчитывает, как часто целевой класс находится в пределах прогнозов top-k.

Михаил Юрасов
источник
Спасибо за ответ. Означает ли это, что даже для двоичной классификации метки должны быть в горячем виде?
Raghuram
@Raghuram Нет, для бинарной классификации вам просто нужно 0 или 1 как класс, не нужно их горячо кодировать. Поскольку K.mean (K.equal (y_true, K.round (y_pred))) будет соответствовать 2 значениям с плавающей запятой для каждого случая, поэтому оно должно быть 0 или 1, а не [0,1], [1,0].
Дивьяншу Калра
Для категориальной точности используйте categorical_accuracy.
Шиталь Шах
1
для многоклассовой задачи (с более чем двумя классами), есть ли разница между использованием «точности» и «категориальной точности»
Кецалькоатль