二维情况下两个tensor matmul就是矩阵乘法,但是当高维的情况呢?
构建(2,3,2)tensor 和 (2,2,2)tensor 进行相乘
>>> d
tensor([[[ 0., 1.],
[ 2., 3.],
[ 4., 5.]],
[[ 6., 7.],
[ 8., 9.],
[10., 11.]]])
>>> e
tensor([[[0., 1.],
[2., 3.]],
[[4., 5.],
[6., 7.]]])
>>> f=torch.matmul(d,e)
>>> f
tensor([[[ 2., 3.],
[ 6., 11.],
[ 10., 19.]],
[[ 66., 79.],
[ 86., 103.],
[106., 127.]]])
在第一维上,两个tensor对应位置的矩阵相乘。
这是两个tensor第一维相同的情况,如果第一维不相同的话,分成两种情况
1.两个tensor 有某个tensor第一维为1,那么就是用这个tensor的里面的后两维组成的矩阵和另外一个tensor的第一维里面的两个矩阵分别相乘
2.两个tensor里面没有某个tensor 第一维为1,出错。