在看程序的时候看到了x[…, 0]的语句不是很理解,后来自己做实验略微了解,以此记录方便自己查看。
1
2
3
4
5
6
7
8
9
10
11
12
|
b = torch.Tensor([[[[ 10 , 2 ],[ 4 , 5 ],[ 7 , 8 ]],[[ 1 , 2 ],[ 4 , 5 ],[ 7 , 8 ]]]])
print (b.size())
( 1 , 2 , 3 , 2 )
print (b[…, 0 ])
tensor([[[ 10. , 4. , 7. ],
[ 1. , 4. , 7. ]]])
print (b[…, 0 ].size())
( 1 , 2 , 3 )
print (b[…, 2 ])
Traceback (most recent call last):
File “”, line 1 , in
IndexError: index 2 is out of bounds for dimension 3 with size 2
|
1
2
3
4
5
6
7
8
9
|
print (b[ 0 ,…])
tensor([[[ 10. , 2. ],
[ 4. , 5. ],
[ 7. , 8. ]],
[[ 1. , 2. ],
[ 4. , 5. ],
[ 7. , 8. ]]])
print (b[ 0 ,…].size())
( 2 , 3 , 2 )
|
1
2
3
4
5
|
print (b[ 0 ,…, 0 ].size())
( 2 , 3 )
print (b[ 0 ,…, 0 ])
tensor([[ 10. , 4. , 7. ],
[ 1. , 4. , 7. ]])
|
[…, 0]表示抽取tensor b的第4根轴上的第一列数字组成tensor,[0, …]表示抽取tensor b的第一根轴上的第一列数字组成tensor,[0, …, 0]表示抽取b的第一根和第四根轴上的第一列数字组成tensor。
还发现一个现象
1
2
3
4
5
6
7
|
print (b[…, 0 :])
tensor([[[[ 10. , 2. ],
[ 4. , 5. ],
[ 7. , 8. ]],
[[ 1. , 2. ],
[ 4. , 5. ],
[ 7. , 8. ]]]])
|
1
2
3
4
5
6
7
|
print (b[…, 1 :])
tensor([[[[ 2. ],
[ 5. ],
[ 8. ]],
[[ 2. ],
[ 5. ],
[ 8. ]]]])
|
1
2
|
print (b[…, 2 :])
tensor([], size = ( 1 , 2 , 3 , 0 ))
|
补充:PyTorch中[..., 0]的使用案例
1. 示例1
1
2
3
4
5
|
import torch
a = torch.rand(( 17 , 24 , 8 ))
b = a[..., 0 ]
c = a[:, :, 0 ]
print (b = = c)
|
结果为True
2. 示例2
1
2
3
4
5
|
import torch
a = torch.rand(( 64 , 17 , 24 , 8 ))
b = a[..., 0 ]
c = a[:, :, :, 0 ]
print (b = = c)
|
结果为True
3. 结论
可以看出[…, 0]相当于[:, :, … :, 0]
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qian_5557/article/details/88649762