在tensorflow
验证监视器流auc中,它对流意味着什么?
假设我们设置了every_n_steps = 100
,以便每100步调用一次监视器。
另外,假设验证监视器的input_fn函数将产生数据流。让我们假设10批。
案例1:每次调用验证监视器时,都会重置auc状态,因为在每个验证步骤中,对10个批进行流处理。
案例2: auc状态没有重置,因此流auc是从验证监视器的第一次调用中计算出来的。即,第一输出( 100步)从10批计算,第二验证输出( 200步骤)基于第一次调用后的流auc和输入的10批计算。第三输出( 300步)基于第二次呼叫后的流auc以及输入的10批进行计算。
Question1,实现了哪一种方案?
Question2,如果我们使用tf.metrics.auc
,有什么区别?在这位医生中,他们说:
为了估计数据流上的度量,函数创建一个update_op操作来更新这些变量并返回auc。
因此,这也是计算流auc?!
发布于 2017-06-12 16:15:55
答案是案例1。ValidationMonitor
调用一个Estimator的calls (),它从检查点重新加载模型。局部变量(包括Metrics保存的统计信息)没有保存在检查点中;它们在重新加载检查点后从头开始初始化。
度量总是流的,以便可以组合多个评估步骤(由eval_steps
参数控制到ValidationMonitor
)。但是,此聚合仅在evaluate()
步骤内。
至于tf.contrib.streaming_auc
vs tf.metrics.auc
,后者位于核心TensorFlow中,并具有API稳定性保证(它可能是在以streaming_auc
的形式在contrib
中挂起一段时间之后搬到那里的)。它们应该是等价的,并且核心版本更好,除非contrib
版本获得了一些您想要使用的漂亮的新特性(在这里不适用)。
https://stackoverflow.com/questions/44466944
复制相似问题