Точность Метрическая Цель - PullRequest
0 голосов
/ 12 апреля 2019

Я использую Keras для создания CNN, и я пришел к недоразумению относительно того, что именно делает метрика точности.

Я провел некоторое исследование, и, похоже, он возвращает точность модели. Где именно хранится эта информация? Влияет ли этот показатель на результаты эпохи?

Я не могу найти какие-либо ресурсы, которые действительно подробно описывают, что делает показатель точности. Как мои показатели влияют на использование этого показателя?

      model.compile(
               loss="sparse_categorical_crossentropy",
               optimizer='adam',
               metrics=['accuracy']
               )

Документация Keras не объясняет назначение этого показателя.

Ответы [ 3 ]

1 голос
/ 12 апреля 2019

Любая метрика является функцией предсказаний модели и истинности, так же, как потеря. Точность модели сама по себе не имеет смысла, поскольку она не является свойством только модели, но также набора данных, в котором оценивается модель.

Точность, в частности, является метрикой, используемой для классификации , и это просто соотношение между количеством правильных прогнозов (прогноз, равный метке), и общим числом точек данных в наборе данных.

Любой показатель, который оценивается во время обучения / оценки, является информацией для вас, он не используется для обучения модели. Для фактической тренировки весов используется только функция потерь.

1 голос
/ 12 апреля 2019

В случае вашего вопроса легче проверить исходный код Keras , потому что любая среда глубокого обучения имеет плохую документацию.

Во-первых, вам нужно найти , как обрабатываются строковые представления:

if metric in ('accuracy', 'acc'):
    metric_fn = metrics_module.categorical_accuracy

Это следует для модуля metric, где функция categorical_accuracy имеет значение , определено :

def categorical_accuracy(y_true, y_pred):
    return K.cast(K.equal(K.argmax(y_true, axis=-1),
                          K.argmax(y_pred, axis=-1)),
                  K.floatx())

Понятно, что функция возвращает тензор и просто число, представленное в журналах, поэтому существует функция-обертка для обработки тензора с результатами сравнения:

weighted_metric_fn = weighted_masked_objective(metric_fn)

Эта функция-обертка содержит логику для вычисления конечных значений. Поскольку веса и маски не определены, используется простое усреднение:

return K.mean(score_array)

Итак, в результате получается уравнение:

formula

P.S. Я немного не согласен с @ VnC , потому что точность - это разные термины. Точность показывает частоту правильных предсказаний в задаче классификации, а точность показывает частоту положительных предсказанных значений ( больше ).

1 голос
/ 12 апреля 2019

Он используется только для отчета о производительности вашей модели и не должен влиять на нее, например. насколько точны ваши прогнозы.

Точность в основном означает точность:

precision = true_positives / ( true_positives + false_positives )

Я бы порекомендовал использовать f1_score ( link ), так как он сочетает в себе точность и отзыв.

Надеюсь, что это прояснит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...