比较单热标签结果的优雅方法是什么?

What's an elegant way to compare one-hot label results?

我正在尝试计算单热标签编码张量的 'accuracy',这样对于以下示例,我将得到 0.5。

tensor([[0,0,1], [1,0,0]]) == tensor([[0,0,1], [0,1,0]])

我想知道有多少预测被正确标记。

使用 pytorch 张量实现此目的的最优雅方法是什么?

如果我没理解错的话。您希望每一行的所有值都匹配才能被视为正确的预测,那么它应该是这样的。

(tensor([[0,0,1], [1,0,0]]) == tensor([[0,0,1], [0,1,0]])).all(dim=1).float().mean()

我建议使用 torchmetrics 计算指标 out-of-the-box:

import torch
import torchmetrics

a = torch.tensor([[0, 0, 1], [1, 0, 0]])
b = torch.tensor([[0, 0, 1], [0, 1, 0]])

torchmetrics.functional.accuracy(a, b, subset_accuracy=True)

输出:

tensor(0.5000)