tensorflow验证监控流媒体auc

时间:2017-06-09 21:28:26

标签: python tensorflow

tensorflow验证监视器流式传输auc中,它对流式传输意味着什么?

假设我们设置了every_n_steps = 100,那么每100步就会调用一次监视器。

此外,假设验证监视器的input_fn函数将产生数据流。让我们假设10批。

情况1:每次调用验证监视器时都会重置auc状态,在每个验证步骤中,10个批次都会进行流式传输。

情况2:auc状态未重置,因此流式auc是从第一次调用验证监视器计算出来的。即,第一输出(100步)从10批计算,第二验证输出(200步)基于第一次调用后的流auc以及10个批次输入计算。第三输出(300步)步骤())基于第二次呼叫后的流式传输auc以及10次馈入的数据计算。

问题1,实施了哪一个方案?

问题2,如果我们使用tf.metrics.auc,有什么区别?他们在this doc说:

  

为了估计数据流上的度量,该函数创建update_op操作,更新这些变量并返回auc。

所以这也计算了流式的auc?!

1 个答案:

答案 0 :(得分:0)

答案是案例1. ValidationMonitor调用Estimator的evaluate(),它从检查点重新加载模型。局部变量(包括度量标准所依据的统计信息)不会保存在检查点中;重新加载检查点后,它们将从头开始重新初始化。

指标始终是流式传输,因此可以组合多个评估步骤(由eval_steps ValidationMonitor参数控制)。但是这种聚合仅在evaluate()步骤内。

对于tf.contrib.streaming_auc vs tf.metrics.auc,后者位于核心TensorFlow中,并且具有API稳定性保证(在contrib作为streaming_auc挂出后,它可能已移至那里一点点)。它们应该是等价的,除非contrib版本获得您想要使用的某些新功能(此处不适用),否则核心版本更可取。