1. 初始化3个tensor
a = torch.tensor([[1, 2, 3], [3, 3, 2]])
b = torch.tensor([[1, 2, 3], [3, 3, 5], [4, 1, 2]])
c = torch.tensor([[5, 1, 2], [2, 7, 3]])
print('a:', a)
print('b:', b)
print('c:', c)
其shape为:
a: tensor([[1, 2, 3], #size: (2, 3)
[3, 3, 2]])
b: tensor([[1, 2, 3], #size: (3, 3)
[3, 3, 5],
[4, 1, 2]])
c: tensor([[5, 1, 2], #size: (2, 3)
[2, 7, 3]])
2. 矩阵点乘: 对应元素相乘,要求矩阵维度相同,满足条件矩阵如 a(2, 3), c(2, 3)
- 即Hadamard积,符号为 ⨀ \bigodot ⨀ ,如A1 = a ⨀ \bigodot ⨀ c, ⇒ \Rightarrow ⇒ A 1 i j = a i j ∗ b i j A1_{ij} = a_{ij} \ast b_{ij} A1ij=aij∗bij ;
- 即 A2 = a ∗ \ast ∗ c ;
- 即 A3 = torch.mul(a, b)
运算得:
A1 == A2 == A3 =
tensor([[ 5, 2, 6],
[ 6, 21, 6]])
3. 矩阵叉乘: 前矩阵的列数 == 后矩阵的行数,满足条件矩阵如 a(2, 3), b(3, 3)
- 即 B1 = a @ b;
- 即 B2 = torch.mm(a, b)
- 即 B3 = torch.matmul(a, b)
- Note: torch.dot(para1, para2) 仅支持一维张量的叉乘运算
运算得:
B1 == B2 == B3 =
tensor([[19, 11, 19],
[20, 17, 28]])