[英]TensorFlow SparseCategoricalAccuracy metric computation
我正在尝试使用 TensorFlow 的“SparseCategoricalAccuracy”[TensorFlow 2.0] 计算准确度,并且对计算值和我手动计算的值感到困惑-
m = tf.keras.metrics.SparseCategoricalAccuracy()
m.update_state(
y_true = [[2], [1], [3]],
y_pred = [[0.1, 0.9, 0.8], [0.05, 0.95, 0], [0.02, 0.5, 0.8]],
sample_weight = [1, 1, 1]
# or-
# sample_weight = None
)
m.result().numpy()
# 0.33333334
在这里,因为 'y_pred' 中的第一个和第三个预测匹配 y_true',准确度不应该是 66.67% 而不是 33.33%?
再次,
m.reset_states()
y_pred = [[0.1, 0.4, 0.8], [0.05, 0.95, 0], [0.2, 0.1, 0.7]]
m.update_state(y_true=y_true, y_pred=y_pred, sample_weight=None)
m.result().numpy()
# 0.6666667
y_true
# [[2], [1], [3]]
y_pred
# [[0.1, 0.4, 0.8], [0.05, 0.95, 0], [0.2, 0.1, 0.7]]
在这里,准确度应该是 33.33%,因为只有一个 'y_pred' 即第三个预测与 'y_true' 匹配
我究竟做错了什么?
谢谢?
您的标签需要被零索引。 然后你会得到正确的精度。
m = tf.keras.metrics.SparseCategoricalAccuracy()
m.update_state(
# We have changed y_true = [[2], [1], [3]] to the following
y_true = [[1], [0], [2]],
y_pred = [[0.1, 0.9, 0.8], [0.05, 0.95, 0], [0.02, 0.5, 0.8]],
sample_weight = [1, 1, 1]
# or-
# sample_weight = None
)
m.result().numpy()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.