megengine.functional.matmul#

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

对矩阵 inp1inp2 进行矩阵乘法。

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

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

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

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

  • 如果其中一个张量的维度是3或更高,那么另一个张量的维度需要保证 >= 2。其中维度更低的张量将会被广播到更高的维度,进行批量的矩阵乘法。例如:

    • 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
>>> 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)
>>> out.numpy()
array([[10., 13.],
       [28., 40.]], dtype=float32)