繁体   English   中英

TensorFlow SparseCategoricalAccuracy 度量计算

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM