Мне интересно, как метрики точности в TensorFlow / Keras рассчитывают, соответствует ли данный вход ожидаемый прогноз или, другими словами, как он определяет прогнозируемое число net.
Пример 1:
Вывод: [0, 0, 0.6]
, ожидаемый вывод: [0, 0, 1]
Я предполагаю, что 0,6 просто округляется до 1, правильно? Или оно рассматривается как единственное число больше 0,5, следовательно, это предсказанное число.
Но, если это так, то рассмотрим Пример 2:
Вывод: [0.6, 2, 0.1]
, ожидаемый вывод: [1, 0, 0]
Я знаю, такой вывод невозможен при softmax
, который здесь будет выбран по умолчанию. Но это было бы возможно с другими функциями активации.
Является ли здесь сейчас только наибольшее число, «извлеченное» и принятое в качестве предсказания? Итак, 2
, что было бы неверным прогнозом.
Пример 3:
Вывод: [0.1, 0, 0.2]
, ожидаемый вывод: [0, 0, 1]
Поскольку каждое число в выходных данных меньше 0,5, я предполагаю, что калькулятор точности будет видеть этот вывод как [0, 0, 0]
, поэтому также не является правильным прогнозом. Это правильно?
Если мои предыдущие предположения верны, то будет ли правило следующим образом?
Каждое число меньше 0.5
является 0
с точки зрения предсказания и из чисел больше 0.5
или равных 0.5
я выбираю наибольшее. Наибольшее значение тогда представляет прогнозируемый класс.
Если это так, то точность можно использовать только для классификаций только с одним соответствующим правильным классом (например, не может быть ожидаемого результата, такого как [1, 0, 1]
)