函数原型
tf.keras.metrics.CategoricalAccuracy(
name='categorical_accuracy',
dtype=None
)
函数说明
CategoricalAccuracy函数用于计算多分类问题的准确率。CategoricalAccuracy函数的计算过程如下:
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())
函数检查 y_ture 中最大值对应的index与y_pred 中最大值对应的index是否相等。其中,y_true 应为一个 one-hot向量。
另外,如果使用SparseCategoricalAccuracy函数,y_true 应为一个表示类型的整数。
函数使用
# y_true为one-hot形式
>>> y_true = [[0, 0, 1], [0, 1, 0], [0, 1, 0]]
>>> y_pred = [[0.2, 0.3, 0.5], [0.3, 0.5, 0.2], [0.1, 0.1, 0.8]]
>>> accuracy = tf.keras.metrics.CategoricalAccuracy()
>>> accuracy_calc = accuracy(y_true, y_pred)
>>> accuracy_calc
<tf.Tensor: shape=(), dtype=float32, numpy=0.6666667>
# 对比
# y_true为整数形式
>>> y_true = [2, 1, 1]
>>> y_pred = [[0.2, 0.3, 0.5], [0.3, 0.5, 0.2], [0.1, 0.1, 0.8]]
>>> accuracy = tf.keras.metrics.SparseCategoricalAccuracy()
>>> accuracy_calc = accuracy(y_true, y_pred)
>>> accuracy_calc
<tf.Tensor: shape=(), dtype=float32, numpy=0.6666667>