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压缩和解压缩zip文件的教程
May 06 Python
python list排序的两种方法及实例讲解
Mar 20 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
详解django2中关于时间处理策略
Mar 06 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
Python实现仿射密码的思路详解
Apr 23 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
Python计算矩阵的和积的实例详解
Sep 10 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 Python
SpringBoot首页设置解析(推荐)
Feb 11 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
php 异常处理实现代码
2009/03/10 PHP
php设计模式 Observer(观察者模式)
2011/06/26 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
小程序实现留言板
2018/11/02 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
项目工作说明书
2014/07/29 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
三十年同学聚会感言
2015/07/30 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis