张量的索引切片

张量的索引切片

张量的索引切片方式和numpy几乎是一样的。切片时支持缺省参数和省略号。可以通过索引和切片对部分元素进行修改。类似于数组的切片,但是又稍微有些不同:
例如:a=torch.rand(4,3,28,28):dim=4的张量数据a
(1)a[:2]:取第一个维度的前2个维度数据(不包括2);
(2)a[:2,:1,:,:]:取第一个维度的前两个数据,取第二个维度的第一个数据,后两个维度全都取到;
(3)a[:2,1:,:,:]:取第一个维度的前两个数据,取第二个维度的索引1到最后索引的数据(包含1),后两个维度全都取到;
(4)a[:2,-3:]:取第一个维度的前两个数据,负号表示第二个维度上从倒数第三个数据取到最后倒数第一个数据-1(包含-3);
(5)a[:,:,0:28:2,0:28:2]:前两个维度全都取到,两个冒号表示隔行取数据,一定的间隔,最后两个维度取索引0到27之间的数据,且间隔为2;
其中间隔为2;
(6)a[:,:,::2,::3]:前两个维度全都取到,两个冒号直接写表示从所有的数据中隔行取数据,第三个维度以间隔2取所有数据,第四个维度以间隔3取所有数据
此外,对于不规则的切片提取,可以使用torch.index_select, torch.masked_select, torch.take
torch.index_select功能为从张量的某个维度的指定位置选取数据
torch.masked_select会根据掩码张量mask中的二元值,取输入张量中的指定项( mask为一个 ByteTensor),将取值返回到一个新的1D张量,张量 mask须跟input张量有相同数量的元素数目,但形状或维度不需要相同
torch.take先将张量数据打平为一个dim=1的张量数据(依次排序下来成为一个数据列),然后按照索引进行取数据

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值