pytorch中None索引的效果是添加一个维度
a = torch.randn([3, 224, 224])
b = a[:, None, :, :]
print(a.shape)
print(b.shape)
运行结果:
torch.Size([3, 224, 224])
torch.Size([3, 1, 224, 224])
另外 …索引是代表往后全部的意思
a = torch.randn([3, 224, 224])
b = a[0, ...]
c = a[0, :, :]
print(a.shape)
print(b.shape)
print(c.shape)
运行结果,b和c是一样的:
torch.Size([3, 224, 224])
torch.Size([224, 224])
torch.Size([224, 224])
加在前面也可以
a = torch.randn([3, 224, 224])
b = a[..., 0]
c = a[:, :, 0]
print(a.shape)
print(b.shape)
print(c.shape)
运行结果:
torch.Size([3, 224, 224])
torch.Size([3, 224])
torch.Size([3, 224])
索引加上::时,维度不会发生变化
a = torch.randn([1, 3, 224, 224])
b = a[0, ...]
c = a[0::, ...]
print(a.shape)
print(b.shape)
print(c.shape)
结果:
torch.Size([1, 3, 224, 224])
torch.Size([3, 224, 224])
torch.Size([1, 3, 224, 224])