Pytorch中index_select() 函数的实现理解


Posted in Python onNovember 19, 2019

函数形式:

index_select(
 dim,
 index
)

参数:

  • dim:表示从第几维挑选数据,类型为int值;
  • index:表示从第一个参数维度中的哪个位置挑选数据,类型为torch.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.]])

功能:从张量的某个维度的指定位置选取数据。

代码实例:

t = torch.arange(24).reshape(2, 3, 4) # 初始化一个tensor,从0到23,形状为(2,3,4)
print("t--->", t)
 
index = torch.tensor([1, 2]) # 要选取数据的位置
print("index--->", index)
 
data1 = t.index_select(1, index) # 第一个参数:从第1维挑选, 第二个参数:从该维中挑选的位置
print("data1--->", data1)
 
data2 = t.index_select(2, index) # 第一个参数:从第2维挑选, 第二个参数:从该维中挑选的位置
print("data2--->", data2)

运行结果: 

t---> tensor([[[ 0,  1,  2,  3],
               [ 4,  5,  6,  7],
               [ 8,  9, 10, 11]],
 
              [[12, 13, 14, 15],
               [16, 17, 18, 19],
               [20, 21, 22, 23]]])
 
index---> tensor([1, 2])
 
data1---> tensor([[[ 4,  5,  6,  7],
                   [ 8,  9, 10, 11]],
 
                  [[16, 17, 18, 19],
                   [20, 21, 22, 23]]])
 
data2---> tensor([[[ 1,  2],
                   [ 5,  6],
                   [ 9, 10]],
 
                  [[13, 14],
                   [17, 18],
                   [21, 22]]])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
Django之模型层多表操作的实现
Jan 08 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
wxpython布局的实现方法
Nov 01 Python
python字符串反转的四种方法详解
Dec 02 Python
Python接口测试get请求过程详解
Feb 28 Python
基于python 取余问题(%)详解
Jun 03 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
python的setattr函数实例用法
Dec 16 Python
wxPython多个窗口的基本结构
Nov 19 #Python
windows中安装Python3.8.0的实现方法
Nov 19 #Python
让你的Python代码实现类型提示功能
Nov 19 #Python
wxPython实现分隔窗口
Nov 19 #Python
浅谈Python type的使用
Nov 19 #Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 #Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 #Python
You might like
《心理测量者3》剧场版动画预告
2020/03/02 日漫
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
javascript与cookie 的问题详解
2013/11/11 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
在Python的Django框架中创建语言文件
2015/07/27 Python
Python 3中的yield from语法详解
2017/01/18 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
聊聊Python中的pypy
2018/01/12 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
Python类装饰器实现方法详解
2018/12/21 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
Django密码存储策略分析
2020/01/09 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
html5文字阴影效果text-shadow使用示例
2013/07/25 HTML / CSS
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
配置管理计划的主要内容有哪些
2014/06/20 面试题
学生个人的自我评价分享
2013/11/05 职场文书
工作个人的自我评价
2014/01/14 职场文书
打架检讨书300字
2014/02/02 职场文书
机械系毕业生求职信
2014/05/28 职场文书
工程承包协议书
2014/10/20 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
学生通报表扬范文
2015/05/04 职场文书
Java基础-封装和继承
2021/07/02 Java/Android