机器学习中,评价指标Top

Love The Way You Lie 2022-12-25 05:00 228阅读 0赞

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21hc3RlclNoYXc_size_16_color_FFFFFF_t_70

Top-1 错误率 = 1.0 - Top-1正确率

Top-5 错误率 = 1.0 - Top-5正确率 【Top-1,Top-5中的Top指的是一个图片中的概率前1和前5,不是所有图片中预测最好的1个或5个图片】

实现代码:

  1. def accuracy(output, target, topk=(1,)):
  2. maxk = max(topk)
  3. batch_size = target.size(0)
  4. # torch.topk(input, k, dim=None, largest=True, sorted=True, *, out=None) -> (Tensor, LongTensor)
  5. _, pred = output.topk(maxk, 1, True, True) # Returns the k largest elements of the given input tensor along a given dimension.
  6. # _ 是dim=1维度下的max k个values;pred是dim=1维度下values的下标。参见:https://blog.csdn.net/u014264373/article/details/86525621
  7. pred = pred.t()
  8. # >> > b = torch.tensor([[2, 2], [3, 3], [5, 5]])
  9. # >> > print(b.size())
  10. # torch.Size([3, 2])
  11. # >> > a.expand_as(b)
  12. # tensor([[2, 2],
  13. # [3, 3],
  14. # [4, 4]])
  15. # >> > a
  16. # tensor([[2],
  17. # [3],
  18. # [4]])
  19. correct = pred.eq(target.view(1, -1).expand_as(pred)) # expand_as 把一个tensor变成和函数括号内一样形状的tensor,用法与expand()类似
  20. # outputs = torch.FloatTensor([[1], [2], [3]])
  21. # targets = torch.FloatTensor([[0], [2], [3]])
  22. # print(targets.eq(outputs.data)) = [0,1,1]
  23. res = []
  24. for k in topk:
  25. correct_k = correct[:k].view(-1).float().sum(0)
  26. res.append(correct_k.mul_(100.0/batch_size)) # 如果batch_size = 10,表示10张图片一起技计算。那么correct_k是10张的正确度相加。
  27. return res
  28. def evaluteTop1(model, loader):
  29. model.eval()
  30. correct = 0
  31. total = len(loader.dataset)
  32. for x,y in loader:
  33. x,y = x.to(device), y.to(device)
  34. with torch.no_grad():
  35. logits = model(x)
  36. pred = logits.argmax(dim=1)
  37. correct += torch.eq(pred, y).sum().float().item()
  38. #correct += torch.eq(pred, y).sum().item()
  39. return correct / total
  40. def evaluteTop5(model, loader):
  41. model.eval()
  42. correct = 0
  43. total = len(loader.dataset)
  44. for x, y in loader:
  45. x,y = x.to(device),y.to(device)
  46. with torch.no_grad():
  47. logits = model(x)
  48. maxk = max((1,5))       
  49. y_resize = y.view(-1,1)
  50. _, pred = logits.topk(maxk, 1, True, True)
  51. correct += torch.eq(pred, y_resize).sum().float().item()
  52. return correct / total

发表评论

表情:
评论列表 (有 0 条评论,228人围观)

还没有评论,来说两句吧...

相关阅读

    相关 机器学习评价指标

    \`机器学习中,模型评估指标是指对于一个模型结果的数据型量化 分类算法常见评估指标: 对于二类分类器/分类算法,评价指标主要有accuracy, \[Precision,

    相关 机器学习算法模型评价指标ROC AUC

    【导读】在机器学习研究或项目中使用分类精度、均方误差这些方法衡量模型的性能。当然,在进行实验的时候,一种或两种衡量指标并不能说明一个模型的好坏,因此我们需要了解常用的几种机器学