我正在尝试使用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这里,准确率不应该是66.67%而不是33.33%,因为'y_pred‘中的第一个和第三个预测匹配y_true’吗?
再一次,
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]]这里,由于只有一个'y_pred‘即第三个预测与'y_true’匹配,因此准确率应为33.33%。
我做错了什么?
谢谢?
发布于 2019-12-15 17:00:27
您的标签需要零索引。然后,您将获得正确的准确性。
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()https://stackoverflow.com/questions/59342422
复制相似问题