Класс SparseTopKCategoricalAccuracy
Класс SparseTopKCategoricalAccuracy применяется для оценки качества классификации, когда истинные метки заданы в разреженном (целочисленном) формате, а не в виде one-hot векторов. Метрика проверяет, входит ли правильный класс в число k наиболее вероятных предсказаний модели. Первым параметром передается целое число k, определяющее размер топа. Вторым параметром можно передать имя метрики name. Третьим параметром задается тип данных dtype.
Синтаксис
tf.keras.metrics.SparseTopKCategoricalAccuracy(k=5, name='sparse_top_k_categorical_accuracy', dtype=None)
Пример
Давайте создадим метрику с k равным 2 и обновим ее значениями: истинные метки 1 и 3, предсказания в виде матрицы вероятностей:
import tensorflow as tf
m = tf.keras.metrics.SparseTopKCategoricalAccuracy(k=2)
m.update_state([1, 3], [[0.1, 0.6, 0.2, 0.1], [0.05, 0.1, 0.1, 0.75]])
print(m.result().numpy())
Результат выполнения кода:
1.0
Пример
Давайте проверим случай, когда правильная метка не попала в топ-1, при k равном 1:
import tensorflow as tf
m = tf.keras.metrics.SparseTopKCategoricalAccuracy(k=1)
m.update_state([0, 1], [[0.2, 0.5, 0.3], [0.6, 0.1, 0.3]])
print(m.result().numpy())
Результат выполнения кода:
0.0
Пример
Давайте обнулим состояние метрики с помощью метода reset_state и вычислим точность на одном батче:
import tensorflow as tf
m = tf.keras.metrics.SparseTopKCategoricalAccuracy(k=3)
m.update_state([2, 0], [[0.1, 0.2, 0.7], [0.8, 0.1, 0.1]])
m.reset_state()
m.update_state([2], [[0.3, 0.3, 0.4]])
print(m.result().numpy())
Результат выполнения кода:
1.0
Смотрите также
-
класс
TopKCategoricalAccuracy,
который вычисляет топ-K точность для one-hot меток -
класс
SparseCategoricalAccuracy,
который вычисляет обычную точность для разреженных меток -
класс
SparseCategoricalCrossentropy,
который вычисляет кросс-энтропию для разреженных меток -
класс
CategoricalAccuracy,
который вычисляет точность для one-hot меток