一看到切片就发蒙,,稍微整理一下。
a=torch.rand(4,3,5)
取第一维度的前两维
print(a)
print(a[:2].size())
print(a[:2])
(写法等同于 a[:2,:1,:])
取第一个维度的前两维,第二个维度的前一维,第三个维度全部取到。
a=torch.rand(4,3,5)
print(a)
print(a[:2,:1].size())
print(a[:2,:1])
取第一维度的前两维,第二维度全取,第三维度的后三维
a=torch.rand(4,3,5)
print(a)
print(a[:2,:,2:].size())
print(a[:2,:,2:])
第一维从倒数第二维向后取,其余同上。
a=torch.rand(4,3,5)
print(a)
print(a[-2:,:,2:].size())
print(a[-2:,:,2:])
a=torch.rand(4,3,5)
print(a)
print(a[:-2,:,2:].size())
print(a[:-2,:,2:])
从以上五种情况来看,如果是切片中是正数,那么不论是从前向后取还是从后向前取(冒号在前/后),都会包括边界维;
但是如果切片中是负数,如果从前向后取(冒号在前),则不包括边界维;如果从后向前取(冒号在后),包含边界维。
两个冒号表示间隔取数,前两个数是起止边界(这里注意终止边界取不到),第三个数是间隔
a=torch.rand(4,3,5)
print(a)
print(a[:,:,0:5:2].size())
print(a[:,:,0:5:2])
等同于7中的写法