[英]Keras metrics with TF backend vs tensorflow metrics
当 Keras 2.x 删除某些指标时,变更日志表示这样做是因为它们是“基于批处理的”,因此并不总是准确的。 这是什么意思? tensorflow 中包含的相应指标是否存在相同的缺点? 例如:准确率和召回率指标。
def precision(y_true, y_pred):
"""Precision metric.
Only computes a batch-wise average of precision.
Computes the precision, a metric for multi-label classification of
how many selected items are relevant.
"""
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
precision = true_positives / (predicted_positives + K.epsilon())
return precision
如果y_true
包含数据集中的所有标签并且y_pred
具有对应于所有这些标签的模型预测,那y_pred
。
问题是人们经常将他们的数据集分成批次,例如通过对 1000 张图像进行 10 次评估来评估 10000 张图像。 这对于适应内存限制是必要的。 在这种情况下,您将获得 10 个不同的精度分数,而无法将它们组合起来。
状态度量通过将中间值保留在持续整个评估的变量中来解决这个问题。 所以在的情况下, precision
有状态的指标可能有一个持久计数器true_positives
和predicted_positives
。 TensorFlow 指标是有状态的,例如tf.metrics.precision 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.