我正在尝试使用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值?
谢谢。
发布于 2018-04-17 02:04:22
指标包有一种独特的运行方式。本例中的第一个值是AUC,第二个值您不需要查看,您只需运行操作来更新多个批次的值(多次调用sess.run。
采用这种方法的原因是,如果您只计算AUC,那么在一次sess.run调用中就可以很好地工作,但是如果您必须在一个太大而无法在一次sess.run调用中处理的数据集上计算AUC,则必须保存一些聚合变量,以便在所有批处理结束时计算最终AUC (这就是指标包所做的)。
解决方案是update_op。当您在多个批次上为每个批次运行update_op时,它会累积计算AUC所需的内容。在任何时候,您都可以请求AUC的计算值(您的第一个属性),您将获得基于update_op管理的当前变量的计算结果(无需更改该值)。如果你得到的全是0,我猜你只是没有在运行update_op。我不确定我期望从update_op本身获得什么值(您显示的第二个值),它应该是我期望的一组操作,所以我不知道如何准确地解释它。
https://stackoverflow.com/questions/49847971
复制相似问题