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 httplib,smtplib使用方法
Sep 06 Python
Python中的自省(反射)详解
Jun 02 Python
python+pandas生成指定日期和重采样的方法
Apr 11 Python
python+jinja2实现接口数据批量生成工具
Aug 28 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
Sep 07 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
Pytorch提取模型特征向量保存至csv的例子
Jan 03 Python
Django自定义列表 models字段显示方式
Apr 03 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 Python
python自动生成sql语句的脚本
Feb 24 Python
在python中读取和写入CSV文件详情
Jun 28 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将session放入memcached的设置方法
2014/02/14 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
php中让人头疼的浮点数运算分析
2016/10/10 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
详解Python迭代和迭代器
2016/03/28 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
python中如何使用insert函数
2020/01/09 Python
python标准库OS模块详解
2020/03/10 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
消防志愿者活动方案
2014/08/23 职场文书
社区护士演讲稿
2014/08/27 职场文书
实习生辞职信范文
2015/03/02 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书