pytorch中tensor索引的理解

论坛 期权论坛 脚本     
匿名技术用户   2021-1-15 14:55   11   0

最近在学习pytorch,对于索引这一块,总是感觉有点晕,经过自己的一番探索,将自己的理解分享一下。如有不对,请大神们不惜赐教,欢迎随时纠正。

先区分一下索引和切片

从概念的角度讲:

索引:提取其中的某个元素(对座查找)

切片:用刀来切出要留下的东西

从操作的角度看:

import torch as t

以二维数据为例子

a=t.arange(16).view(4, 4)
# a = 
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])

索引:

a[1,2] #提取一个数,一定要在两个维度上都有数据

a[[1,1,1],2]#两个维度长度不一致,自动补全

a[[1,1,1],[2,2,2] #与上面等同

如果出现每个维度上的数据不全,那么会自动补全,当然补全操作就是只是该维度上的所有。

a[1], 自动补全为a[1, :],

a[:, 1], 逗号前端东西不能省略()

这就成为了切片操作

所以切片操作也是索引的一个子集,但是切片操作中必定有:操作符

所以看一下不同:

>>> a[1,1]
tensor(5) #

>>> a[1:2, 1:2]
tensor([[5]]) #

>>> a[1:2, 1]
tensor([5]) #

>>> a[1, 1:2]
tensor([5])#

>>> a[1,1].shape
torch.Size([])

>>> a[1,1:2].shape
torch.Size([1])

>>> a[1:2,1:2].shape
torch.Size([1, 1])

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP