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中的实例方法、静态方法、类方法、类变量和实例变量浅析
Apr 26 Python
Python实现决策树C4.5算法的示例
May 30 Python
解决Python pandas df 写入excel 出现的问题
Jul 04 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
使用Python横向合并excel文件的实例
Dec 11 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
Python学习笔记之Zip和Enumerate用法实例分析
Aug 14 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 Python
基于python实现把图片转换成素描
Nov 13 Python
python如何设置静态变量
Sep 07 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采集腾讯微博的实现代码
2012/01/19 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
取得父标签
2006/11/14 Javascript
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
python 根据pid杀死相应进程的方法
2017/01/16 Python
Python进程间通信之共享内存详解
2017/10/30 Python
django页面跳转问题及注意事项
2019/07/18 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
工作中个人的自我评价
2013/12/31 职场文书
家长会邀请书
2014/01/25 职场文书
产品售后服务承诺书
2014/05/21 职场文书
校本教研活动总结
2014/07/01 职场文书
销售顾问工作计划书
2014/08/15 职场文书
环卫处个人工作总结
2015/03/04 职场文书
法律意见书范文
2015/06/04 职场文书
2019广播稿怎么写
2019/04/17 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python