pytorch学习笔记-2

pytorch-张量的索引与切片

直接索引-indexing

>>>a = torch.rand(4, 3, 28, 28) # a为一组图片数据 shape = (batch_size, channels, high, width)
>>>a.shape
torch.Size([4, 3, 28, 28])

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

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

高级索引-连续选取-select first/last N

>>>a.shape
torch.Size([4, 3, 28, 28])
>>>a[:2].shape
torch.Size([2, 3, 28, 28]) #取第0和1张图片

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

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

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

高级索引-间隔选取-select by steps

语法含义
all
:n[0, n)
n :[n, END)
n1 :n2[n1, n2)
n1 :n2 :step从n1开始,每经过step个数取一个;step=1时可以省去
>>>a[:, :, 0:28:2, 0:28:2].shape
torch.Size([4, 3, 14, 14]) #对图像做各行采样 开始索引:结束索引:步长

高级索引-选取具体索引号-select by specific index

>>>a.index_select(0, torch.tensor([0, 2])).shape
torch.Size([2, 3, 28, 28]) 
# index_select
# 第一个参数代表需要对哪个维度进行操作,0指代第0维
# 第二个参数代表需要选择的序列数,[0, 2]代表选择序号为0和2的图片

>>>a.index_select(1, torch.tensor([1, 2])).shape
torch.Size([4, 2, 28, 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])

高级索引-掩码选取-select by mask

>>>x = torch.randn(3, 4) # 随机生成三行四列的数据
>>>x
tensor([[ 0.4295,  0.4206, -0.5532, -1.4849],
        [ 0.4281,  0.0803, -1.1630,  1.4777],
        [ 0.1567, -0.9116, -1.7134, -0.1576]])
>>>mask = x.ge(0)  # 将x中大于0的数置为True,小于等于0的数置为False
>>>mask
tensor([[ True,  True, False, False],
        [ True,  True, False,  True],
        [ True, False, False, False]])
>>>torch.masked_select(x, mask)  
# 使用masked_select 选择那些mask中为True的数据, 输出结果展平,shape=(1, n)
tensor([0.4295, 0.4206, 0.4281, 0.0803, 1.4777, 0.1567])
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值