Класс SparseCategoricalAccuracy
Класс SparseCategoricalAccuracy вычисляет точность модели
для задач категориальной классификации, в которых истинные метки
классов передаются в виде целых чисел (индексов классов), а не в виде
one-hot векторов. Класс наследуется от MeanMetricWrapper
и возвращает долю правильных предсказаний.
Первым параметром передаётся имя метрики name (по умолчанию
'sparse_categorical_accuracy'). Вторым параметром
dtype задаётся тип данных для вычислений (по умолчанию
float32). Метод update_state принимает истинные метки
y_true (целые числа) и предсказанные вероятности
y_pred. Метод result возвращает текущее значение точности,
а reset_state сбрасывает накопленную статистику.
Синтаксис
tf.keras.metrics.SparseCategoricalAccuracy(name='sparse_categorical_accuracy', dtype=None)
Пример
Давайте создадим метрику и обновим её состояние на одном батче данных:
import tensorflow as tf
metric = tf.keras.metrics.SparseCategoricalAccuracy()
y_true = tf.constant([1, 2, 0, 1])
y_pred = tf.constant([
[0.1, 0.7, 0.2],
[0.1, 0.2, 0.7],
[0.8, 0.1, 0.1],
[0.3, 0.5, 0.2]
])
metric.update_state(y_true, y_pred)
print(metric.result().numpy())
Результат выполнения кода:
1.0
Пример
Давайте вычислим точность для случая с частично неверными предсказаниями:
import tensorflow as tf
metric = tf.keras.metrics.SparseCategoricalAccuracy()
y_true = tf.constant([0, 1, 2])
y_pred = tf.constant([
[0.7, 0.2, 0.1],
[0.1, 0.2, 0.7],
[0.2, 0.3, 0.5]
])
metric.update_state(y_true, y_pred)
print(metric.result().numpy())
<-python+>
Результат выполнения кода:
0.33333334
Пример
Давайте используем метрику в процессе обучения модели:
import tensorflow as tf
import numpy as np
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(3, activation='softmax', input_shape=(4,))
])
model.compile(
optimizer='sgd',
loss='sparse_categorical_crossentropy',
metrics=[tf.keras.metrics.SparseCategoricalAccuracy()]
)
x = np.random.rand(8, 4)
y = np.random.randint(0, 3, size=(8,))
history = model.fit(x, y, epochs=1, verbose=0)
print(history.history['sparse_categorical_accuracy'])
Результат выполнения кода:
[0.375]
Пример
Давайте сбросим состояние метрики с помощью метода reset_state:
import tensorflow as tf
metric = tf.keras.metrics.SparseCategoricalAccuracy()
y_true = tf.constant([1, 0])
y_pred = tf.constant([
[0.2, 0.8],
[0.6, 0.4]
])
metric.update_state(y_true, y_pred)
print(metric.result().numpy())
metric.reset_state()
print(metric.result().numpy())
Результат выполнения кода:
1.0
0.0
Смотрите также
-
класс
CategoricalAccuracy,
который вычисляет точность для one-hot меток -
класс
SparseCategoricalCrossentropy,
который вычисляет разреженную категориальную кросс-энтропию -
класс
SparseTopKCategoricalAccuracy,
который вычисляет точность попадания в топ-K классов -
класс
Accuracy,
который вычисляет общую точность предсказаний