使用TensorFlow Model Garden测量Top-1和Top-5精度

qoefvg9y  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(92)

我一直在使用TensorFlow Model Garden在我为图像分类创建的自定义数据集上训练一组模型。现在是评估它们的时候了,我在尝试测量我的网络的前k个精度时遇到了一个问题。这个仓库提供了一个方便的评估脚本,即eval_image_classifier.py,它很好地满足了我的需求。在脚本的末尾,在第165行,定义了评估的指标,我可以在其中添加自己的度量,我在这里已经完成了:

# Define the metrics:
names_to_values, names_to_updates = slim.metrics.aggregate_metric_map({
    'Precision': slim.metrics.streaming_precision(predictions, labels),
    'Accuracy':  slim.metrics.streaming_accuracy(predictions, labels),
    'Recall@5':  slim.metrics.streaming_recall_at_k(logits, labels, 5),
    'Recall@1':  slim.metrics.streaming_recall_at_k(logits, labels, 1)
})

TF-slim度量函数是here,包含许多用于评估网络性能的有用度量。但是,我看不到使用所提供的函数来测量top-k性能的方法。top-k函数的查全率和查准率很接近,但并不完全相同。此外,当研究k时的召回率和精度时,它们似乎最常应用于推荐系统,所以我不确定这些是我所需要的。This article说:
第k点的精度是top-k集中推荐项目的相关比例
和/或
Recall at k是在top-k建议中找到的相关项目的比例
而前k准确度是正确项在前k预测中的次数。对我来说,这些看起来都很相似,我发现很难看出确切的区别是什么,即使在对它们进行研究之后。
那么,如何使用TensorFlow Model Garden来衡量top-k性能呢?top-k的查全率和查准率是我要找的函数吗,还是它们有区别?如果没有,在我正在使用的脚本中实现top-k精度的最佳方法是什么?

vql8enpb

vql8enpb1#

看起来你正在寻找一种方法来衡量top-k的准确性。虽然top-k函数有召回率和精确率,但它们可能并不完全是您所需要的。Top-k准确率是正确的项目在top-k预测中的次数,这与top-k的召回率和准确率不同。如果你想实现top-k精度,你需要定义你自己的度量函数。要为top-k准确性定义自己的度量函数,您可以修改评估脚本以计算正确项在top-k预测中的次数。

相关问题