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排序搜索基本算法之堆排序实例详解
Dec 08 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
Python面向对象基础入门之编码细节与注意事项
Dec 11 Python
详解爬虫被封的问题
Apr 23 Python
OpenCV图像颜色反转算法详解
May 13 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
python自动下载图片的方法示例
Mar 25 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
python工具——Mimesis的简单使用教程
Jan 16 Python
Python中的 No Module named ***问题及解决
Jul 23 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
在PHP中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
那些年一起学习的PHP(一)
2012/03/21 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
对python 读取线的shp文件实例详解
2018/12/22 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
利用Python计算KS的实例详解
2020/03/03 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
医生自荐信
2013/10/11 职场文书
售后服务科岗位职责范文
2013/11/13 职场文书
中式面点餐厅创业计划书
2014/01/29 职场文书
统计岗位职责
2014/02/21 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书