26 lines
694 B
Python
26 lines
694 B
Python
from __future__ import absolute_import
|
|
from __future__ import print_function
|
|
from __future__ import division
|
|
|
|
|
|
def accuracy(output, target, topk=(1,)):
|
|
"""Computes the accuracy over the k top predictions for
|
|
the specified values of k
|
|
"""
|
|
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)
|
|
|
|
return res |