pytorch中index_select()的用法详解


Posted in Python onJanuary 06, 2021

pytorch中index_select()的用法

index_select(input, dim, index)

功能:在指定的维度dim上选取数据,不如选取某些行,列

参数介绍

  • 第一个参数input是要索引查找的对象
  • 第二个参数dim是要查找的维度,因为通常情况下我们使用的都是二维张量,所以可以简单的记忆: 0代表行,1代表列
  • 第三个参数index是你要索引的序列,它是一个tensor对象

刚开始学习pytorch,遇到了index_select(),一开始不太明白几个参数的意思,后来查了一下资料,算是明白了一点。

a = torch.linspace(1, 12, steps=12).view(3, 4)
print(a)
b = torch.index_select(a, 0, torch.tensor([0, 2]))
print(b)
print(a.index_select(0, torch.tensor([0, 2])))
c = torch.index_select(a, 1, torch.tensor([1, 3]))
print(c)

先定义了一个tensor,这里用到了linspace和view方法。

第一个参数是索引的对象,第二个参数0表示按行索引,1表示按列进行索引,第三个参数是一个tensor,就是索引的序号,比如b里面tensor[0, 2]表示第0行和第2行,c里面tensor[1, 3]表示第1列和第3列。

输出结果如下:

tensor([[ 1.,  2.,  3.,  4.],
        [ 5.,  6.,  7.,  8.],
        [ 9., 10., 11., 12.]])
tensor([[ 1.,  2.,  3.,  4.],
        [ 9., 10., 11., 12.]])
tensor([[ 1.,  2.,  3.,  4.],
        [ 9., 10., 11., 12.]])
tensor([[ 2.,  4.],
        [ 6.,  8.],
        [10., 12.]])

示例2 

import torch
 
x = torch.Tensor([[[1, 2, 3],
          [4, 5, 6]],
 
         [[9, 8, 7],
          [6, 5, 4]]])
print(x)
print(x.size())
index = torch.LongTensor([0, 0, 1])
print(torch.index_select(x, 0, index))
print(torch.index_select(x, 0, index).size())
print(torch.index_select(x, 1, index))
print(torch.index_select(x, 1, index).size())
print(torch.index_select(x, 2, index))
print(torch.index_select(x, 2, index).size())

input的张量形状为2×2×3,index为[0, 0, 1]的向量

分别从0、1、2三个维度来使用index_select()函数,并输出结果和形状,维度大于2就会报错因为input最大只有三个维度

输出:

tensor([[[1., 2., 3.],
         [4., 5., 6.]],
 
        [[9., 8., 7.],
         [6., 5., 4.]]])
torch.Size([2, 2, 3])
tensor([[[1., 2., 3.],
         [4., 5., 6.]],
 
        [[1., 2., 3.],
         [4., 5., 6.]],
 
        [[9., 8., 7.],
         [6., 5., 4.]]])
torch.Size([3, 2, 3])
tensor([[[1., 2., 3.],
         [1., 2., 3.],
         [4., 5., 6.]],
 
        [[9., 8., 7.],
         [9., 8., 7.],
         [6., 5., 4.]]])
torch.Size([2, 3, 3])
tensor([[[1., 1., 2.],
         [4., 4., 5.]],
 
        [[9., 9., 8.],
         [6., 6., 5.]]])
torch.Size([2, 2, 3])

对结果进行分析:

index是大小为3的向量,输入的张量形状为2×2×3

dim = 0时,输出的张量形状为3×2×3

dim = 1时,输出的张量形状为2×3×3

dim = 2时,输出的张量形状为2×2×3

注意输出张量维度的变化与index大小的关系,结合输出的张量与原始张量来分析index_select()函数的作用

到此这篇关于pytorch中index_select()的用法详解的文章就介绍到这了,更多相关pytorch index_select()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

Python 相关文章推荐
Python中__name__的使用实例
Apr 14 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
python3中str(字符串)的使用教程
Mar 23 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
多个应用共存的Django配置方法
May 30 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
下载官网python并安装的步骤详解
Oct 12 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
Python使用Matlab命令过程解析
Jun 04 Python
通过实例了解Python异常处理机制底层实现
Jul 23 Python
Python-OpenCV教程之图像的位运算详解
Jun 21 Python
Python之京东商品秒杀的实现示例
Jan 06 #Python
Python实现小黑屋游戏的完整实例
Jan 06 #Python
Jupyter Notebook 安装配置与使用详解
Jan 06 #Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 #Python
python requests库的使用
Jan 06 #Python
Python 实现进度条的六种方式
Jan 06 #Python
基于Python实现天天酷跑功能
Jan 06 #Python
You might like
php中字符集转换iconv函数使用总结
2014/10/11 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
基于vuejs+webpack的日期选择插件
2020/05/21 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
详解js中Array的方法及技巧
2018/09/12 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
Python标准库之sqlite3使用实例
2014/11/25 Python
python读取txt文件,去掉空格计算每行长度的方法
2018/12/20 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
pandas分组聚合详解
2020/04/10 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
检讨书范文
2019/04/16 职场文书
如何用Navicat操作MySQL
2021/05/12 MySQL
HDFS免重启挂载新磁盘
2022/04/06 Servers