PyTorch中topk函数的用法详解


Posted in Python onJanuary 02, 2020

听名字就知道这个函数是用来求tensor中某个dim的前k大或者前k小的值以及对应的index。

用法

torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)

input:一个tensor数据

k:指明是得到前k个数据以及其index

dim: 指定在哪个维度上排序, 默认是最后一个维度

largest:如果为True,按照大到小排序; 如果为False,按照小到大排序

sorted:返回的结果按照顺序返回

out:可缺省,不要

topk最常用的场合就是求一个样本被网络认为前k个最可能属于的类别。我们就用这个场景为例,说明函数的使用方法。

假设一个PyTorch中topk函数的用法详解,N是样本数目,一般等于batch size, D是类别数目。我们想知道每个样本的最可能属于的那个类别,其实可以用torch.max得到。如果要使用topk,则k应该设置为1。

import torch

pred = torch.randn((4, 5))
print(pred)
values, indices = pred.topk(1, dim=1, largest=True, sorted=True)
print(indices)
# 用max得到的结果,设置keepdim为True,避免降维。因为topk函数返回的index不降维,shape和输入一致。
_, indices_max = pred.max(dim=1, keepdim=True)

print(indices_max == indices)
# pred
tensor([[-0.1480, -0.9819, -0.3364, 0.7912, -0.3263],
    [-0.8013, -0.9083, 0.7973, 0.1458, -0.9156],
    [-0.2334, -0.0142, -0.5493, 0.0673, 0.8185],
    [-0.4075, -0.1097, 0.8193, -0.2352, -0.9273]])
# indices, shape为 【4,1】,
tensor([[3],  #【0,0】代表 第一个样本最可能属于第一类别
    [2],  # 【1, 0】代表第二个样本最可能属于第二类别
    [4],
    [2]])
# indices_max等于indices
tensor([[True],
    [True],
    [True],
    [True]])

现在在尝试一下k=2

import torch

pred = torch.randn((4, 5))
print(pred)
values, indices = pred.topk(2, dim=1, largest=True, sorted=True) # k=2
print(indices)
# pred
tensor([[-0.2203, -0.7538, 1.8789, 0.4451, -0.2526],
    [-0.0413, 0.6366, 1.1155, 0.3484, 0.0395],
    [ 0.0365, 0.5158, 1.1067, -0.9276, -0.2124],
    [ 0.6232, 0.9912, -0.8562, 0.0148, 1.6413]])
# indices
tensor([[2, 3],
    [2, 1],
    [2, 1],
    [4, 1]])

可以发现indices的shape变成了【4, k】,k=2。

其中indices[0] = [2,3]。其意义是说明第一个样本的前两个最大概率对应的类别分别是第3类和第4类。

大家可以自行print一下values。可以发现values的shape和indices的shape是一样的。indices描述了在values中对应的值在pred中的位置。

以上这篇PyTorch中topk函数的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python日志模块logging简介
Apr 13 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
Python实现删除时保留特定文件夹和文件的示例
Apr 27 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
python实现五子棋人机对战游戏
Mar 25 Python
详解Python3中setuptools、Pip安装教程
Jun 18 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
python小白学习包管理器pip安装
Jun 09 Python
Python连接mysql方法及常用参数
Sep 01 Python
Pytorch训练过程出现nan的解决方式
Jan 02 #Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 #Python
基于MSELoss()与CrossEntropyLoss()的区别详解
Jan 02 #Python
python使用SQLAlchemy操作MySQL
Jan 02 #Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 #Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 #Python
Python基础之函数基本用法与进阶详解
Jan 02 #Python
You might like
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
2017/03/15 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
python刷投票的脚本实现代码
2014/11/08 Python
利用Python批量生成任意尺寸的图片
2016/08/29 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
Python常见的pandas用法demo示例
2019/03/16 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
Python tornado上传文件的功能
2020/03/26 Python
python安装sklearn模块的方法详解
2020/11/28 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
说出数据连接池的工作机制是什么?
2013/04/19 面试题
.NET初级开发工程师面试题
2014/04/18 面试题
新闻网站实习自我鉴定
2013/09/25 职场文书
大学活动总结范文
2014/04/29 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
大跃进口号
2014/06/16 职场文书