前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pytorch -- topk()

pytorch -- topk()

作者头像
狼啸风云
修改2022-09-02 22:30:08
修改2022-09-02 22:30:08
1.5K00
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)

沿给定dim维度返回输入张量input中 k 个最大值。 如果不指定dim,则默认为input的最后一维。 如果为largest为 False ,则返回最小的 k 个值。

返回一个元组 (values,indices),其中indices是原始输入张量input中测元素下标。 如果设定布尔值sorted 为_True_,将会确保返回的 k 个值被排序。

参数:

  • input (Tensor) – 输入张量
  • k(int) – “top-k”中的k
  • dim (int, optional) – 排序的维
  • largest (bool, optional) – 布尔值,控制返回最大或最小值
  • sorted (bool, optional) – 布尔值,控制返回值是否排序
  • out (tuple, optional) – 可选输出张量 (Tensor, LongTensor) output buffer

假设神经网络的输出如下,为二分类。batch_size=4。

代码语言:javascript
代码运行次数:0
运行
复制
import torch 
output = torch.tensor([
[-5.4783, 0.2298],                           
[-4.2573, -0.4794],                           
[-0.1070, -5.1511],                           
[-0.1785, -4.3339]])

得到其top1值操作如下:

代码语言:javascript
代码运行次数:0
运行
复制
maxk = max((1,))  # 取top1准确率,若取top1和top5准确率改为max((1,5))

_, pred = output.topk(maxk, 1, True, True)

topk参数中,maxk取得是top1准确率,dim=1是按行取值, largest=1是取最大值。结果如下,

代码语言:javascript
代码运行次数:0
运行
复制
_

tensor([[ 0.2298],

        [-0.4794],

        [-0.1070],

        [-0.1785]])
代码语言:javascript
代码运行次数:0
运行
复制
pred

tensor([[1],

        [1],

        [0],

        [0]])

_是top1的值,pred是最大值的索引(size=4*1),一般会进行转置处理同真实值对比。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档