矩阵乘法(matmul)和 element-wise(mul)
对于a为二维矩阵,b为三维矩阵,相乘时广播机制要求从后向前对齐,a扩展后为相当于对a矩阵复制3次(b1第一维度的次数) 后,达到维度3,2,2再与b相乘。复制后的效果为
[[0., 1.],
[2., 3.]],
[[0., 1.],
[2., 3.]],
[[0., 1.],
[2., 3.]]]
import torch
import numpy as nn
a1 = torch.tensor(nn.arange(4).reshape(2,2))
b1 = torch.tensor(nn.arange(12).reshape(3,2,2))
c=torch.mul(a1,b1) # 广播机制后 a1扩展为 torch.Tensor([[[0, 1],[2, 3]],[[0, 1],[2, 3]],[[0, 1],[2, 3]]])
print(c,c.shape) #torch.Size([3, 2, 2])