tf.metrics的返回值是什么意思?

时间:2018-05-20 08:42:40

标签: python tensorflow

我一直在尝试添加一些有用的中间计算,用于将我的损失函数导出到我的评估eval_metric_ops的{​​{1}}字典中。我把它们包裹在tf.metrics.mean的电话中,因为它似乎符合我的需要。

此函数的返回类型是EstimatorSpec tuple,其中(mean, update_op)表面上是当前均值,mean是计算新均值并返回的操作它

但是,当我尝试对其进行评估时,我发现update_opvalue字段似乎有所不同。就我所见,文档没有对此作出解释。

例如,请使用以下代码段:

update_op

返回以下内容:

    test_tensor = tensorflow.constant([[1, 2, 3], [4, 5, 6]])
    test_mean = tensorflow.metrics.mean(test_tensor)

    sess = tensorflow.Session()
    sess.run(tensorflow.global_variables_initializer())
    sess.run(tensorflow.local_variables_initializer())

    print sess.run(test_mean)
    print sess.run(test_mean)
    print sess.run(test_mean)
    print sess.run(test_mean)

    print sess.run(test_mean[0])
    print sess.run(test_mean)[1]

元组的第二个值显然是输入值的总体平均值,但是左侧值似乎是向(0.0, 3.5) (1.75, 3.5) (2.3333333, 3.5) (2.625, 3.5) 3.5 3.5 渐近,而采用test_mean的零索引并对其进行评估会导致直接3.5,而不是通过评估整个操作然后获取索引得到的值。

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

是的,似乎tf.metrics中正在运行的指标中存在一个错误。已提交错误here以及此处触发的讨论there