代码之家  ›  专栏  ›  技术社区  ›  Stewart_R

tf.metrics.accuracy返回的第一个值代表什么?

  •  1
  • Stewart_R  · 技术社区  · 5 年前

    我想了解返回的值 tf.metrics.accuracy

    考虑这个最小的例子:

    predictions = tf.constant([[1,0,1], [1,0,1]], dtype=tf.int32)
    labels = tf.constant([[0,0,1], [1,0,1]], dtype=tf.int32)
    
    acc = tf.metrics.accuracy(labels, predictions)
    
    with tf.Session() as sess:
      sess.run(tf.local_variables_initializer())
      res = sess.run(acc)
    print(res) 
    

    输出:

    (0.0, 0.8333333)
    

    第二个值是我期望的值(我们有5/6的值,其中 predictions == labels 所以5/6~=0.83),但第一个零值对我来说是个谜?

    这个 TensorFlow docs 请这样说:

    返回:

    • 精度:表示精度的张量,即 总数除以计数。
    • 更新操作:增加 适当地合计和计数变量以及其值匹配的变量 准确性。

    但这表明两个返回操作的值都应该是0.83,不是吗?(但是返回2次行动有什么意义呢?!)

    感觉我错过了一些基本的东西!

    1 回复  |  直到 5 年前
        1
  •  2
  •   Mikhail Berlinkov    5 年前

    根据TensorFlow代码和描述,第一个值是在没有最新数据批的情况下计算的精度(如果是流数据),第二个值是用所有数据计算的最终精度。TensorFlow使用它进行数据流处理。