在看程序的时候看到了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