pytorch中张量切片

一看到切片就发蒙,,稍微整理一下。

a=torch.rand(4,3,5)

1.a[:2]

取第一维度的前两维

print(a)
print(a[:2].size())
print(a[:2])

pytorch中张量切片_第1张图片

2.a[:2,:1]

(写法等同于 a[:2,:1,:])

取第一个维度的前两维,第二个维度的前一维,第三个维度全部取到。

a=torch.rand(4,3,5)
print(a)
print(a[:2,:1].size())
print(a[:2,:1])

pytorch中张量切片_第2张图片

3.a[:2,:,2:]

取第一维度的前两维,第二维度全取,第三维度的后三维

a=torch.rand(4,3,5)
print(a)
print(a[:2,:,2:].size())
print(a[:2,:,2:])

pytorch中张量切片_第3张图片

4.a[-2:,:,2:]

第一维从倒数第二维向后取,其余同上。

a=torch.rand(4,3,5)
print(a)
print(a[-2:,:,2:].size())
print(a[-2:,:,2:])

pytorch中张量切片_第4张图片

5.a[:-2,:,2:]

a=torch.rand(4,3,5)
print(a)
print(a[:-2,:,2:].size())
print(a[:-2,:,2:])

pytorch中张量切片_第5张图片

6.小结(重要)

从以上五种情况来看,如果是切片中是正数,那么不论是从前向后取还是从后向前取(冒号在前/后),都会包括边界维;

但是如果切片中是负数,如果从前向后取(冒号在前),则不包括边界维;如果从后向前取(冒号在后),包含边界维。

7. a[:,:,0:5:2]

两个冒号表示间隔取数,前两个数是起止边界(这里注意终止边界取不到),第三个数是间隔

a=torch.rand(4,3,5)
print(a)
print(a[:,:,0:5:2].size())
print(a[:,:,0:5:2])

pytorch中张量切片_第6张图片
pytorch中张量切片_第7张图片

8.a[:,:,0::2]

等同于7中的写法

你可能感兴趣的:(编程基础,pytorch)