megengine.functional.matmul¶
-
matmul
(inp1, inp2, transpose_a=False, transpose_b=False, compute_mode='DEFAULT', format='DEFAULT')[源代码]¶ 对矩阵
inp1
和inp2
进行矩阵乘法。当输入的dim不同时,执行的函数是不同的:
都是1维张量,此时等价于点积运算。
都是2维张量,此时是普通的矩阵乘法。
如果其中一个输入张量是1维的,此时是一个矩阵和一个向量相乘。
如果至少有一个张量是3维的或大于3维的,此时会进行批矩阵乘法,低维的张量会被广播。例如:
inp1: (n, k, m), inp2: (n, m, p), 返回: (n, k, p)
inp1: (n, k, m), inp2: (m, p), 返回: (n, k, p)
inp1: (n, j, k, m), inp2: (n, j, m, p), 返回: (n, j, k, p)
- 参数
inp1 (
Tensor
) – 相乘计算中的第一个矩阵。inp2 (
Tensor
) – 相乘计算中的第二个矩阵。
- 返回类型
Tensor
- 返回
输出张量。
例如:
import numpy as np from megengine import tensor import megengine.functional as F data1 = tensor(np.arange(0, 6, dtype=np.float32).reshape(2, 3)) data2 = tensor(np.arange(0, 6, dtype=np.float32).reshape(3, 2)) out = F.matmul(data1, data2) print(out.numpy())
输出:
[[10. 13.] [28. 40.]]