我正在尝试使用tf.contrib.metrics.streaming_auc找到AUC值。这个问题是在每个时代之后,我的AUC值如下:
(0.0, 0.37472612)
(0.0, 0.57414174)
(0.0, 0.5894814)
...
如果我正确理解文档,第一个值(即0.0)代表auc
,第二个值代表update_op
。
在这种情况下,哪个值实际代表每个纪元后的AUC值?
感谢。
答案 0 :(得分:0)
指标包具有独特的运作方式。在这种情况下,第一个值是AUC,您不需要查看的第二个值,您只需要运行OP来更新多个批次的值(多次调用sess.run
。< / p>
这种方法的原因在于,如果你只计算AUC,那么在一次调用sess.run
时可以正常工作,但如果你必须计算一个太大而无法处理的数据集的AUC调用sess.run
你必须保存一些聚合变量,以计算所有批次结束时的最终AUC(这是指标包的作用)。
解决方案是update_op
。当您为多个批次运行每个批次的update_op
时,它会累积计算AUC所需的内容。您可以随时询问AUC(您的第一个属性)的计算值,并根据update_op
管理的当前变量进行计算(不更改值)。如果你得到全部0,我猜你还没有运行update_op
。我不确定我对update_op
本身(你所展示的第二个值)的期望是什么,它应该是我期望的一组OP,所以我不知道如何准确地解释。