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解析html开发库pyquery使用方法
Feb 07 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
python 使用socket传输图片视频等文件的实现方式
Aug 07 Python
对python 树状嵌套结构的实现思路详解
Aug 09 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
Python缓存技术实现过程详解
Sep 25 Python
Django如何实现密码错误报错提醒
Sep 04 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
解决pytorch 保存模型遇到的问题
Mar 03 Python
Python基础之hashlib模块详解
May 06 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
Oracle 常见问题解答
2006/10/09 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
微信小程序实现上拉加载功能
2019/11/20 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
pycharm远程调试openstack的图文教程
2017/11/21 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Python2包含中文报错的解决方法
2018/07/09 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
python实现视频读取和转化图片
2019/12/10 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
斯福泰克软件测试面试题
2015/02/16 面试题
个人事迹材料范文
2014/12/29 职场文书
承诺书范本大全
2015/05/04 职场文书
结婚堵门保证书
2015/05/08 职场文书
公司车队管理制度
2015/08/04 职场文书