不同纬度的tensor相加
直接上代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15a = torch.tensor([[[ 1, 2, 3]],[[-1, 1, 4]]] , dtype= torch.float)
print(a)
print(a.shape)
#tensor([[[ 1., 2., 3.]],
#
# [[-1., 1., 4.]]])
#torch.Size([2, 1, 3])
torch.transpose(a, 1, 2)
#tensor([[[ 1.],
# [ 2.],
# [ 3.]],
#
# [[-1.],
# [ 1.],
# [ 4.]]])
神奇之处,直接进行相加操作1
a+torch.transpose(a, 1, 2)
得到结果1
2
3
4
5
6
7tensor([[[ 2., 3., 4.],
[ 3., 4., 5.],
[ 4., 5., 6.]],
[[-2., 0., 3.],
[ 0., 2., 5.],
[ 3., 5., 8.]]])
一个是横的一个是束的,怎么能相加的呢,仔细观察,可以发现,在[[ 1., 2., 3.]]
和 [[ 1.], [ 2.],[ 3.]]
相加的时候,第一个在二三行进行了复制补齐,第二个在二三列进行了复制补齐,之后就均为两个2x3x3维度的tensor,就可以相加了。