pytorch学习笔记(五)——Tensor索引

Tensor索引 

dim 0 开始索引

a = torch.rand(4,3,28,28)
a[0].shape  # 第0张图片 torch.Size([3,28,28])

a[0,0].shape  #取第0张图片的第0个通道 torch.Size([28,28])

a[0,0,2,4].shape  #取第0张图片的第0个通道的第2行第4列的像素点 tensor(0.8082)

取前/后几个图片

a[:2].shape  #取前两张图片 torch.Size([2,3,28,28])

a[:2,:1,:,:].shape #取前两张图片第一个通道上的所有数据 torch.Size([2,1,28,28])

a[:2,1:,:,:].shape #取前两张图片后两个通道上的所有数据 torch.Size([2,2,28,28])

a[:2,-1:,:,:].shape #取前两张图片最后一个通道上的所有数据 torch.Size([2,1,28,28])

按间隔选取

a[:,:,0:28:2,0:28:2].shape  #对所有图片所有通道的长和宽隔行采样 torch.Size([4,3,14,14])

a[:,:,::2,::2].shape  #对所有图片所有通道的长和宽隔行采样 torch.Size([4,3,14,14])

选取具体索引值

a.index_select(0,torch.tensor([0,2])).shape # 选第0张和第2张图片的所有通道所有长宽torch.Size([2,3,28,28])

a.index_select((1,torch.tensor([1,2])).shape # 选G,B通道所有图片所有长宽 torch.Size([4,2,28,28])

a.index_select((2,torch.arange(8)).shape #所有图片所有通道8行所有宽 torch.Size([4,3,8,28])

...代表所有维度取满

a[...].shape  # torch.Size([4,3,28,28])

a[0,...].shape  # torch.Size([3,28,28])

a[:,1,...].shape  # torch.Size([4,28,28])

a[...,:2].shape  # torch.Size([4,3,28,2])

.masked_select()  会被打平

取>0.5的元素

打平索引

b = torch.tensor([[4,3,5],
                  [6,7,8]])
torch.take(b,torch.tensor([0,2,5]))
# tensor([4,5,8]) 结果返回的是打平后的索引的值

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值