在Keras中,官方内置了几种评价函数。
- 对于二分类问题,评价指标可以用 binary_accuracy,就是最直观上讲的准确率。
- 当面对多分类或者多标签的任务时,评价度量可能会用到这两个 categorical_accuracy和 sparse_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())
def sparse_categorical_accuracy(y_true, y_pred):
return K.cast(K.equal(K.max(y_true, axis=-1),
K.cast(K.argmax(y_pred, axis=-1), K.floatx())),
K.floatx())
-
categorical_accuracy:检查 y_ture 中最大值对应的index 与 y_pred 中最大值对应的index是否相等。(只比较1个值,即最大的那个值的index)适用于多分类单标签的任务,不适用多标签任务,y_true 应为一个 one-hot 向量
-
sparse_categorical_accuracy检查 y_true 中的值(本身就是index,且为整数) 与 y_pred 中最大值对应的index是否相等。
例如:
categorical_accuracy:
y_true = (0, 0, 1, 0)
y_pred = (0.01, 0.02, 0.87, 0.5)
acc = categorical_accuracy(y_true, y_pred)
sparse_categorical_accuracy:
y_true = 5
y_pred = (0.01, 0.02, 0.87, 0.5)
acc = sparse_categorical_accuracy(y_true, y_pred)