Pytorch中tensor的索引

引言

做了一段时间的目标检测,在这个过程中也复现了不少经典的检测网络,例如,faster-rcnn,yolov3,retinanet等等。在学习,消化别人代码的过程中,经常会遇到一个多维的tensor来索引另一个多维的tensor这种种类似的情况,而我对索引的概念还停留在a[0],a[0,:],a[0,…]的阶段,因此在理解代码的过程中需要多次调试,来查看tensor的shape,dytpe。最近经过多方面的调研,总结,特写下以下心得。

分类

tensor的索引共分为两种情况,一是整型(int)的索引,另一种是布尔型(bool)索引。此处注意,索引也是一个tensor。
int型索引中,索引的维度可以是0维,1维,2维…,常使用的a[1,:]中,1是被看成一个0维tensor。而bool型索引的维度是根据被索引的tensor决定的(以下用Tensor表示被索引的tensor)。

概述

可进行索引的位置是由Tensor的维度决定的,例如Tensor的维度为3,则有3个不同的索引位置,这个相信大家都能理解。当索引位置出现int索引或者bool型索引时,其中的区别在于:bool型索引考虑这个维度中的数保留与否,而int型考虑的是这个维度中的数保留哪个。下面通过例子进行说明。

例子

1、0维的索引

int型

 Tensor = torch.randn(5, 7, 3)
 idx = torch.tensor(4,dtype=torch.long)
 a = Tensor[idx]

则a的shape为(7,3)

bool型不存在0维索引

2、1维的索引

int型

Tensor = torch.randn(5, 7, 3)
idx = torch
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值