Pytorch中index_select() 函数的实现理解

 更新时间:2019年11月19日 09:51:20   作者:清晨的光明  
这篇文章主要介绍了Pytorch中index_select() 函数的实现理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

函数形式:

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]]])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解Python3中的 input() 函数

    详解Python3中的 input() 函数

    这篇文章主要介绍了详解Python3中的 input() 函数的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2020-03-03
  • Python利用OpenCV和skimage实现图像边缘检测

    Python利用OpenCV和skimage实现图像边缘检测

    提取图片的边缘信息是底层数字图像处理的基本任务之一。本文将通过OpenCV和skimage的 Canny 算法实现图像边缘检测,感兴趣的可以了解一下
    2022-12-12
  • python Pygal库生成SVG(可缩放矢量图形)图表示例

    python Pygal库生成SVG(可缩放矢量图形)图表示例

    这篇文章主要为大家介绍了python Pygal库生成SVG(可缩放矢量图形)图表示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python图像处理Pillow库的基础使用

    Python图像处理Pillow库的基础使用

    Pillow库是Python中最流行的图像处理库之一,它是PIL(Python Imaging Library)的一个分支,提供了丰富的图像处理功能,使图像处理变得简单而高效,在这篇文章中,我们将探讨Pillow库的一些基本功能,感兴趣的朋友可以参考下
    2023-09-09
  • python random模块常用函数基础教程

    python random模块常用函数基础教程

    这篇文章主要为大家介绍了python random模块常用函数基础教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Pandas merge合并两个DataFram的实现

    Pandas merge合并两个DataFram的实现

    本文主要介绍了Pandas merge合并两个DataFram的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 详解Python如何实现压缩与解压缩数据

    详解Python如何实现压缩与解压缩数据

    当数据量大的时候,自然而然想到的就是对数据进行压缩,这篇文章主要为大家介绍了Python可以实现压缩与解压缩数据的相关模块的使用,希望对大家有所帮助
    2024-02-02
  • Python编程使用matplotlib绘制动态圆锥曲线示例

    Python编程使用matplotlib绘制动态圆锥曲线示例

    这篇文章主要介绍了Python使用matplotlib绘制动态的圆锥曲线示例实现代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • python3环境搭建过程(利用Anaconda+pycharm)完整版

    python3环境搭建过程(利用Anaconda+pycharm)完整版

    这篇文章主要介绍了python3环境搭建过程(利用Anaconda+pycharm)完整版,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Python字典简介以及用法详解

    Python字典简介以及用法详解

    字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
    2016-11-11

最新评论