pytorch 两个不同纬度的Tensor相减是怎么实现的?
dim小的会复制到和dim大的一方相同,再相减.
例子:
>>> import torch
>>> d = torch.Tensor([[[1,2,3],[4,5,6],[7,8,9]]])
>>> d
tensor([[[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]]])
>>> d.shape
torch.Size([1, 3, 3])
>>> f = torch.Tensor([[[1]], [[2]], [[3]]])
>>> f
tensor([[[1.]],
[[2.]],
[[3.]]])
>>> f.shape
torch.Size([3, 1, 1])
>>> d-f
tensor([[[ 0., 1., 2.],
[ 3., 4., 5.],
[ 6., 7., 8.]],
[[-1., 0., 1.],
[ 2., 3., 4.],
[ 5., 6., 7.]],
[[-2., -1., 0.],
[ 1., 2., 3.],
[ 4., 5., 6.]]])
>>> (d-f).shape
torch.Size([3, 3, 3])
注意:复制仅限于dim=1的时候。