在Keras中,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())发布于 2017-06-11 12:54:47
看着来源
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检查最大真值的指数是否等于最大预测值的指数。
sparse_categorical_accuracy检查最大真值是否等于最大预测值的指数。
根据Marcin上面的答案,categorical_accuracy对应于one-hot编码的y_true载体。
发布于 2017-06-11 12:42:45
因此,在categorical_accuracy中,您需要将目标(y)指定为一个热编码向量(例如,在3个类的情况下,当一个真正的类是第二类时,y应该是(0, 1, 0)。在sparse_categorical_accuracy中,您只需要提供真正类的整数(在前面的示例中--因为类索引是0-based),这将是1。
发布于 2020-08-17 20:14:33
sparse_categorical_accuracy期望稀疏目标
[[0], [1], [2]]例如:
import tensorflow as tf
sparse = [[0], [1], [2]]
logits = [[.8, .1, .1], [.5, .3, .2], [.2, .2, .6]]
sparse_cat_acc = tf.metrics.SparseCategoricalAccuracy()
sparse_cat_acc(sparse, logits)<tf.Tensor: shape=(), dtype=float64, numpy=0.6666666666666666>categorical_accuracy期望一个热编码目标
[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]例如:
onehot = [[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]
logits = [[.8, .1, .1], [.5, .3, .2], [.2, .2, .6]]
cat_acc = tf.metrics.CategoricalAccuracy()
cat_acc(sparse, logits)<tf.Tensor: shape=(), dtype=float64, numpy=0.6666666666666666>https://stackoverflow.com/questions/44477489
复制相似问题