gpt4 book ai didi

python - 如何使用 PyTorch 获得语义分割中的 top k 准确率?

转载 作者:行者123 更新时间:2023-12-01 06:40:38 26 4
gpt4 key购买 nike

如何计算语义分割中前 k 个准确率?在分类中,我们可以将 topk 准确率计算为:

correct = output.eq(gt.view(1, -1).expand_as(output))

最佳答案

您正在寻找 torch.topk 计算沿维度的前 k 个值的函数。
第二个输出torch.topk是“arg top k”:顶部值的 k 索引。

以下是如何在语义分割的上下文中使用它:
假设您有地面实况预测张量 y形状b -h -w (dtype= torch.int64 )。
您的模型预测每个像素类别 logits形状b -c -h -w ,与 c是类的数量(包括“背景”)。这些 logits 是 softmax 之前的“原始”预测。函数将它们转换为类概率。因为我们只看顶部k ,预测是“原始”还是“概率”并不重要。

# compute the top k predicted classes, per pixel:
_, tk = torch.topk(logits, k, dim=1)
# you now have k predictions per pixel, and you want that one of them will match the true labels y:
correct_pixels = torch.eq(y[:, None, ...], tk).any(dim=1)
# take the mean of correct_pixels to get the overall average top-k accuracy:
top_k_acc = correct_pixels.mean()

请注意,此方法不考虑“忽略”像素。这可以通过对上面的代码稍作修改来完成:

valid = y != ignore_index
top_k_acc = correct_pixels[valid].mean()

关于python - 如何使用 PyTorch 获得语义分割中的 top k 准确率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59474987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com