megengine.functional.matmul

matmul(inp1, inp2, transpose_a=False, transpose_b=False, compute_mode='default', format='default')[源代码]

对矩阵 inp1inp2 进行矩阵乘法。

当输入的dim不同时,执行的函数是不同的:

  • 都是1维张量,此时等价于点积运算。

  • 都是2维张量,此时是普通的矩阵乘法。

  • 如果其中一个输入张量是1维的,此时是一个矩阵和一个向量相乘。

  • If at least one tensor are 3-dimensional or >3-dimensional, the other tensor should have dim >= 2, the batched matrix-matrix is returned, and the tensor with smaller dimension will be broadcasted. For example:

    • 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.]]