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通过线程实现定时器timer的方法
Mar 16 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
Python列表删除的三种方法代码分享
Oct 31 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
pandas重新生成索引的方法
Nov 06 Python
Python基础知识点 初识Python.md
May 14 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
Python运行异常管理解决方案
Mar 09 Python
Python爬虫爬取、解析数据操作示例
Mar 27 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
用python删除文件夹中的重复图片(图片去重)
May 12 Python
Python 键盘事件详解
Nov 11 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实现发送微信模板消息的方法
2015/03/07 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
JavaScript DOM操作表格及样式
2015/04/13 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
深入解析Python中的线程同步方法
2016/06/14 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
2014全国两会学习心得体会1000字
2014/03/10 职场文书
高中语文课后反思
2014/04/27 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
摩登时代观后感
2015/06/03 职场文书
2016年记者节感言
2015/12/08 职场文书