繁体   English   中英

带有 TF 后端的 Keras 指标与 tensorflow 指标

[英]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_positivespredicted_positives TensorFlow 指标是有状态的,例如tf.metrics.precision

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM