我在这里不太了解有状态指标的解释:Keras metrics with TF backend vs tensorflow metrics
现在,如果我将我的评估数据分成几批,并且对于每一批我都使用tf.metrics.precision来表示精度,这是否意味着先前的变量(计数器假阳性等)将用于下一个计算中批量?这真的很糟糕,因为我希望对每个批次进行一次评估(这就是为什么要拆分!)
在这种情况下,如何为每个批次重置变量。
我需要每个批次中的单个值作为平均值。
答案 0 :(得分:0)
tf.metrics.Precision
之类的东西(召回等)存储正确/错误肯定的原因是因为我们不想分批估计它们(与准确性或损失等不同)。 keras
中Precision的原始实现(注意,不是tf.keras
)完全按照您的描述(对每个批次进行一次评估,然后进行汇总),但后来在2.0.0版中删除,因为这种方式计算全局指标的误导多于帮助(https://github.com/keras-team/keras/issues/5794)。
但是您仍然可以做您想做的事情,您可以继承tf.metrics.Metric
的类,并在update_state
方法中实现Precision的逻辑。 Tensorflow上的Metric API文档提供了一个自定义Metrics示例。 https://www.tensorflow.org/api_docs/python/tf/keras/metrics/Metric
我希望这会有所帮助!