pytorch中torch.topk()函数怎么用
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"pytorch中torch.topk()函数怎么用",在日常操作中,相信很多人在pytorch中torch.topk()函数怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的
千家信息网最后更新 2026年11月01日pytorch中torch.topk()函数怎么用
这篇文章主要介绍"pytorch中torch.topk()函数怎么用",在日常操作中,相信很多人在pytorch中torch.topk()函数怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"pytorch中torch.topk()函数怎么用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
函数作用:


该函数的作用即按字面意思理解,topk:取数组的前k个元素进行排序。
通常该函数返回2个值,第一个值为排序的数组,第二个值为该数组中获取到的元素在原数组中的位置标号。
举个栗子:
import numpy as npimport torchimport torch.utils.data.dataset as Datasetfrom torch.utils.data import Dataset,DataLoader####################准备一个数组#########################tensor1=torch.tensor([[10,1,2,1,1,1,1,1,1,1,10], [3,4,5,1,1,1,1,1,1,1,1], [7,8,9,1,1,1,1,1,1,1,1], [1,4,7,1,1,1,1,1,1,1,1]],dtype=torch.float32)####################打印这个原数组#########################print('tensor1:')print(tensor1)#################使用torch.topk()这个函数##################print('使用torch.topk()这个函数得到:')'''k=3代表从原数组中取得3个元素,dim=1表示从原数组中的第一维获取元素(在本例中是分别从[10,1,2,1,1,1,1,1,1,1,10]、[3,4,5,1,1,1,1,1,1,1,1]、 [7,8,9,1,1,1,1,1,1,1,1]、[1,4,7,1,1,1,1,1,1,1,1]这四个数组中获取3个元素)其中largest=True表示从大到小取元素'''print(torch.topk(tensor1, k=3, dim=1, largest=True))#################打印这个函数第一个返回值####################print('函数第一个返回值topk[0]如下')print(torch.topk(tensor1, k=3, dim=1, largest=True)[0])#################打印这个函数第二个返回值####################print('函数第二个返回值topk[1]如下')print(torch.topk(tensor1, k=3, dim=1, largest=True)[1])'''#######################运行结果##########################tensor1:tensor([[10., 1., 2., 1., 1., 1., 1., 1., 1., 1., 10.], [ 3., 4., 5., 1., 1., 1., 1., 1., 1., 1., 1.], [ 7., 8., 9., 1., 1., 1., 1., 1., 1., 1., 1.], [ 1., 4., 7., 1., 1., 1., 1., 1., 1., 1., 1.]])使用torch.topk()这个函数得到:'得到的values是原数组dim=1的四组从大到小的三个元素值;得到的indices是获取到的元素值在原数组dim=1中的位置。'torch.return_types.topk(values=tensor([[10., 10., 2.], [ 5., 4., 3.], [ 9., 8., 7.], [ 7., 4., 1.]]),indices=tensor([[ 0, 10, 2], [ 2, 1, 0], [ 2, 1, 0], [ 2, 1, 0]]))函数第一个返回值topk[0]如下tensor([[10., 10., 2.], [ 5., 4., 3.], [ 9., 8., 7.], [ 7., 4., 1.]]) 函数第二个返回值topk[1]如下tensor([[ 0, 10, 2], [ 2, 1, 0], [ 2, 1, 0], [ 2, 1, 0]])'''该函数功能经常用来获取张量或者数组中最大或者最小的元素以及索引位置,是一个经常用到的基本函数。
实例演示
任务一:
取top1(最大值):
pred = torch.tensor([[-0.5816, -0.3873, -1.0215, -1.0145, 0.4053], [ 0.7265, 1.4164, 1.3443, 1.2035, 1.8823], [-0.4451, 0.1673, 1.2590, -2.0757, 1.7255], [ 0.2021, 0.3041, 0.1383, 0.3849, -1.6311]])print(pred)values, indices = pred.topk(1, dim=0, largest=True, sorted=True)print(indices)print(values)# 用max得到的结果,设置keepdim为True,避免降维。因为topk函数返回的index不降维,shape和输入一致。_, indices_max = pred.max(dim=0, keepdim=True)print(indices_max)print(indices_max == indices)输出:tensor([[-0.5816, -0.3873, -1.0215, -1.0145, 0.4053], [ 0.7265, 1.4164, 1.3443, 1.2035, 1.8823], [-0.4451, 0.1673, 1.2590, -2.0757, 1.7255], [ 0.2021, 0.3041, 0.1383, 0.3849, -1.6311]])tensor([[1, 1, 1, 1, 1]])tensor([[0.7265, 1.4164, 1.3443, 1.2035, 1.8823]])tensor([[1, 1, 1, 1, 1]])tensor([[True, True, True, True, True]])
任务二:
按行取出topk,将小于topk的置为inf:
pred = torch.tensor([[-0.5816, -0.3873, -1.0215, -1.0145, 0.4053], [ 0.7265, 1.4164, 1.3443, 1.2035, 1.8823], [-0.4451, 0.1673, 1.2590, -2.0757, 1.7255], [ 0.2021, 0.3041, 0.1383, 0.3849, -1.6311]])print(pred)top_k = 2 # 按行求出每一行的最大的前两个值filter_value=-float('Inf')indices_to_remove = pred < torch.topk(pred, top_k)[0][..., -1, None]print(indices_to_remove)pred[indices_to_remove] = filter_value # 对于topk之外的其他元素的logits值设为负无穷print(pred) 输出:tensor([[-0.5816, -0.3873, -1.0215, -1.0145, 0.4053], [ 0.7265, 1.4164, 1.3443, 1.2035, 1.8823], [-0.4451, 0.1673, 1.2590, -2.0757, 1.7255], [ 0.2021, 0.3041, 0.1383, 0.3849, -1.6311]])tensor([[4], [4], [4], [3]])tensor([[0.4053], [1.8823], [1.7255], [0.3849]])tensor([[ True, False, True, True, False], [ True, False, True, True, False], [ True, True, False, True, False], [ True, False, True, False, True]])tensor([[ -inf, -0.3873, -inf, -inf, 0.4053], [ -inf, 1.4164, -inf, -inf, 1.8823], [ -inf, -inf, 1.2590, -inf, 1.7255], [ -inf, 0.3041, -inf, 0.3849, -inf]])任务三:
import numpy as npimport torchimport torch.utils.data.dataset as Datasetfrom torch.utils.data import Dataset,DataLoadertensor1=torch.tensor([[10,1,2,1,1,1,1,1,1,1,10], [3,4,5,1,1,1,1,1,1,1,1], [7,8,9,1,1,1,1,1,1,1,1], [1,4,7,1,1,1,1,1,1,1,1]],dtype=torch.float32)# tensor2=torch.tensor([[3,2,1],# [6,5,4],# [1,4,7],# [9,8,7]],dtype=torch.float32)#print('tensor1:')print(tensor1)print('直接输出topk,会得到两个东西,我们需要的是第二个indices')print(torch.topk(tensor1, k=3, dim=1, largest=True))print('topk[0]如下')print(torch.topk(tensor1, k=3, dim=1, largest=True)[0])print('topk[1]如下')print(torch.topk(tensor1, k=3, dim=1, largest=True)[1])'''tensor1:tensor([[10., 1., 2., 1., 1., 1., 1., 1., 1., 1., 10.], [ 3., 4., 5., 1., 1., 1., 1., 1., 1., 1., 1.], [ 7., 8., 9., 1., 1., 1., 1., 1., 1., 1., 1.], [ 1., 4., 7., 1., 1., 1., 1., 1., 1., 1., 1.]])直接输出topk,会得到两个东西,我们需要的是第二个indicestorch.return_types.topk(values=tensor([[10., 10., 2.], [ 5., 4., 3.], [ 9., 8., 7.], [ 7., 4., 1.]]),indices=tensor([[ 0, 10, 2], [ 2, 1, 0], [ 2, 1, 0], [ 2, 1, 0]]))topk[0]如下tensor([[10., 10., 2.], [ 5., 4., 3.], [ 9., 8., 7.], [ 7., 4., 1.]])topk[1]如下tensor([[ 0, 10, 2], [ 2, 1, 0], [ 2, 1, 0], [ 2, 1, 0]])'''到此,关于"pytorch中torch.topk()函数怎么用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
函数
数组
元素
学习
输出
最大
两个
任务
位置
东西
作用
更多
结果
帮助
排序
实用
最小
一致
接下来
一行
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技网
蓝思科技飞鸽互联网
北京路客互联网科技有限公司
科技创新与互联网经济
深圳互联网科技公司
互联网科技作文
齐家互联网科技
杭州互联网科技公司
互联网与未来科技
鑫亿盛互联网科技
互联网科技ppt模板
万达互联网科技
成都铂石互联网科技做什么的
昊天互联网科技有限公司
工业互联网山东科技大学
黑科技 体验场景 互联网大会
科技互联网行业投资研究
保山互联网科技靠谱吗
上海旺乐尼互联网科技有限公司
六子台科技互联网展会
蓝思科技飞鸽互联网
科技类互联网
互联网巨头投资的硬核科技
中国最先进互联网科技公司
小米互联网科技园设置
科技与互联网哪个更好
燊美集互联网科技有限公司
伍佰万互联网科技怎么赚钱
富国互联网科技002692
吉林省码上互联网科技电话