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代码制作configure文件示例
Jul 28 Python
Python中变量交换的例子
Aug 25 Python
剖析Python的Tornado框架中session支持的实现代码
Aug 21 Python
python定时关机小脚本
Jun 20 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
Python 给某个文件名添加时间戳的方法
Oct 16 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
python钉钉机器人运维脚本监控实例
Feb 20 Python
PyCharm 2020 激活到 2100 年的教程
Mar 25 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
python软件都是免费的吗
Jun 18 Python
如何利用python之wxpy模块玩转微信
Aug 17 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
py中的目录与文件判别代码
2008/07/16 Python
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
python 对key为时间的dict排序方法
2018/10/17 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
python爬取内容存入Excel实例
2019/02/20 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
简单了解Python生成器是什么
2019/07/02 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
大学新学期计划书
2014/04/28 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
成绩报告单家长评语
2014/12/30 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
字节飞书面试promise.all实现示例
2022/06/16 Javascript