|
|
|
|
|
|
|
|
|
|
|
|
|
import numpy as np |
|
import torch |
|
|
|
|
|
def accuracy(output, target, topk=(1,)): |
|
"""Computes the accuracy over the k top predictions for the specified values of k""" |
|
with torch.no_grad(): |
|
maxk = max(topk) |
|
batch_size = target.size(0) |
|
|
|
_, pred = output.topk(maxk, 1, True, True) |
|
pred = pred.t() |
|
correct = pred.eq(target.reshape(1, -1).expand_as(pred)) |
|
|
|
res = [] |
|
for k in topk: |
|
correct_k = correct[:k].reshape(-1).float().sum(0, keepdim=True) |
|
res.append(correct_k.mul_(100.0 / batch_size)) |
|
return res |
|
|
|
|
|
def get_mean_accuracy(cm): |
|
list_acc = [] |
|
for i in range(len(cm)): |
|
acc = 0 |
|
if cm[i, :].sum() > 0: |
|
acc = cm[i, i] / cm[i, :].sum() |
|
list_acc.append(acc) |
|
|
|
return 100 * np.mean(list_acc), 100 * np.trace(cm) / np.sum(cm) |
|
|