比较单热标签结果的优雅方法是什么?
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)
我正在尝试计算单热标签编码张量的 '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)