众所周知,神经网络预测类别是以概率的形式给出。

像这样:用一个CNN来预测图像6个类别:香蕉,苹果,大鸭梨,草莓,葡萄,大西瓜。

假设一个batch中有两条数据,batch_1和batch_2,(也就是有两张图像)。它们的label值为2(大鸭梨)和5(大西瓜)。

预测的概率值如下表所示

类别 香蕉 苹果 大鸭梨 草莓 葡萄 大西瓜 label
batch_1 0.05 0.2 0.3 0.2 0.2 0.15 2
batch_2 0.03 0.1 0.3 0.07 0.4 0.1 5

Top-1 就是去每个batch中没组数据中的最大概率值的分类。可以通过函数torch.topk(input, k, dim=None, largest=True, sorted=True, *, out=None)函数来获得 。

经过torch.topk将返回两个值,分别为:values和 indices。

例如上面的那个例子,

top-1 value  = [0.3,  0.4]
top-1 indices =[2,4]

在计算准确率时,类别是对应的index值,所以讲top1 indices与label进行比较

[2,4] vs. [2,5] = [True,False]  准确率为1/2=0.5

同理,top-5 计算如下,准确率为100%。

top-5 value  = [[0.3, 0.2, 0.2, 0.2, 0.15], [0.4, 0.3, 0.1, 0.1, 0.07]]
top-5 indices =[[2, 1, 3, 4, 5],[4, 2, 1, 5, 3]][[2, 1, 3, 4, 5],       [[2],VS.         = [True True] = 2/2=1[4, 2, 1, 5, 3]]        [5]]

这也就是为什么top-5的值要大于top-1了,因为top-5的包容性更强。

以上就是我个人的理解,若有不正确的,请不吝赐教,大家一起进步!

以下是我找的一部分代码,具体出处不记得了。

import numpy as np
import torchdef cls_accuracy(output, target, topk=(1,)):maxk = max(topk)batch_size = target.size(0)_, pred = output.topk(maxk, 1, True, True)print("top-5 的 index:\n",pred)pred = pred.t()correct = pred.eq(target.view(1, -1).expand_as(pred))res = []for k in topk:correct_k = correct[:k].contiguous().view(-1).float().sum(0)res.append(correct_k / batch_size)return res
pre = np.random.randint(0,9,[4,10])
b = torch.from_numpy(pre)
print("预测的结果:\n",b)
label = np.random.randint(0,9,[4])
t = torch.from_numpy(label)acc=cls_accuracy(b, t, topk=(1,5))
print("top-1 acc:",acc[0],"\ntop-5 acc:",acc[1])
预测的结果:tensor([[6, 0, 2, 0, 1, 3, 1, 4, 1, 2],[7, 2, 8, 8, 1, 2, 5, 2, 5, 2],[4, 0, 5, 6, 6, 5, 8, 5, 1, 7],[2, 8, 4, 6, 6, 5, 4, 5, 3, 5]], dtype=torch.int32)
top-5 的 index:tensor([[0, 7, 5, 2, 9],[2, 3, 0, 6, 8],[6, 9, 3, 4, 2],[1, 3, 4, 5, 7]])
top-1 acc: tensor(0.5000)
top-5 acc: tensor(1.)

何为Top-1,Top-5相关推荐

  1. linux自动执行top,Linux top 命令使用

    top命令结合jvm诊断工具jstack能够快速帮我们定位有问题的代码位置,输入top命令,运行图如下 CPU负载 第一行包括运行时间.当前时间.用户数量和系统平均负载,其中后面三个数字就是一分钟.五 ...

  2. oracle 当前top sql,Oracle top 查询TOP SQL

    有时Oracle数据库服务器,系统CPU爆高,通过Top命令可以查看到占用CPU最高的进程 我们需要记住前几个TOP的pid号,带入下面的SQL,到数据库中查询运行的进程.服务器.用户.SQL.等待等 ...

  3. THE TOP FILE(top文件详解)

    INTRODUCTION (1)top能实现一组机器部署不同业务环境,达到相互协调配合的工作. (2)top文件包含了计算机之间的映射关系以及配置文件角色的文件. (3)默认top文件被命名为top. ...

  4. mysql top virt_linux top命令VIRT,RES,SHR,DATA的含义

    VIRT:virtual memory usage 虚拟内存1.进程"需要的"虚拟内存大小,包括进程使用的库.代码.数据等 2.假如进程申请100m的内存,但实际只使用了10m,那 ...

  5. linux命令stat和top,Linux Top 命令解析 比较详细

    TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中C ...

  6. linux命令stat和top,用top,du,df,ls,free,tree,stat命令更人性化显示数据

    在 Linux 系统中怎么以人性化的方式显示数据,top,du,df,ls,free,tree,stat 命令怎样才能让其输出更易于理解的选项.让我们一起来了解这些技能.其实不是每个人都以二进制方式思 ...

  7. Linux 命令 top 学习总结

    本文简介     概要: 学习总结 Linux 下的 top 命令     版本: Debian 5(Lenny), top: procps version 3.2.7     日期: 2010-11 ...

  8. 11 款可替代 top 命令的工具!

    ‍ ‍ 作者 | JackTian 来源 | 杰哥的IT之旅 在 Linux 环境下 top 命令都不陌生,它以实时动态的方式查看系统的整体运行情况,综合了多方信息监测系统性能和运行信息的实用工具,通 ...

  9. linux查进程ps和top,Linux中几个进程查看命令总结 ps, top, htop, vmstat

    ps命令可以以快照的方式,一次显示所有或部分系统进程. ps a :当前和中断相关进程[root@centos ~]# ps a PID TTY      STAT   TIME COMMAND 23 ...

  10. Top 命令 如何查看linux系统中空闲内存/物理内存使用/剩余内存

    1.top命令 top前5行统计信息 ** 第一行: top - 13:59:30 up 15 days, 4:53, 2 users, load average: 1.31, 1.62, 1.41 ...

最新文章

  1. 第九期直播|《深度相机与应用》精彩回顾
  2. AdvStringGrid 垂直居中 、水平居中
  3. !!基础---c# 下载网页+图片
  4. React中BrowserRouter与HashRouter的区别
  5. ubuntu 在线安装php,ubuntu在线安装LNMP
  6. 这才是晕了哟,dos之家上全是graybird???????????
  7. 将Surfer grd格网文件转成ArcGIS asc格式
  8. app上架oppo应用商店流程
  9. GPIO实现I2C从机的设计[1]
  10. ChatGPT套壳网站汇总-5月22日更新
  11. 休闲——漫威系列观影顺序
  12. 如何设置外部链接优化
  13. 【基础知识-高数-1】——雅可比行列式与“可逆性”证明一则
  14. 什么是VOIP和SIP?
  15. 自动驾驶系列(二) - 路径规划五种算法简述及对比
  16. IDC机房维护的成本,和托管的成本对比
  17. python查找文件并重命名_python复制文件并重命名
  18. 千万级支付对账系统怎么玩(上篇)?
  19. 计算机网络学习记录1
  20. 展开w ndows文件很慢,(Wndows优化大师的功能和使用方法分析.doc

热门文章

  1. 只招「测试开发工程师」了
  2. 运营商大数据系列(一) LTE信令数据简析
  3. 谷歌无法保持登录状态
  4. 解读Sandbox:它不是一个游戏
  5. 2021年全国计算机二级考试时间安排出炉(全年)
  6. 测试工程师个人简历模板
  7. 新手站长说说之避免网站seo关键词排名的错误做法
  8. 一个小老板的日常管理,希望能让创业朋友学到东西
  9. ospf不连续区域网络互通
  10. python3GUI--多功能火星文转化器(附源码)