38 lines
1.1 KiB
Python
Raw Normal View History

2019-12-01 02:35:44 +00:00
from __future__ import division, print_function, absolute_import
2019-03-19 17:26:08 +00:00
2019-12-01 02:35:44 +00:00
def accuracy(output, target, topk=(1, )):
2019-03-19 17:26:08 +00:00
"""Computes the accuracy over the k top predictions for
the specified values of k.
Args:
output (torch.Tensor): prediction matrix with shape (batch_size, num_classes).
target (torch.LongTensor): ground truth labels with shape (batch_size).
topk (tuple, optional): accuracy at top-k will be computed. For example,
topk=(1, 5) means accuracy at top-1 and top-5 will be computed.
Returns:
list: accuracy at top-k.
Examples::
>>> from torchreid import metrics
>>> metrics.accuracy(output, target)
2019-03-19 17:26:08 +00:00
"""
maxk = max(topk)
batch_size = target.size(0)
if isinstance(output, (tuple, list)):
output = output[0]
_, pred = output.topk(maxk, 1, True, True)
pred = pred.t()
correct = pred.eq(target.view(1, -1).expand_as(pred))
res = []
for k in topk:
correct_k = correct[:k].view(-1).float().sum(0, keepdim=True)
acc = correct_k.mul_(100.0 / batch_size)
res.append(acc)
2019-12-01 02:35:44 +00:00
return res