megengine.functional.matmul¶
- matmul(inp1, inp2, transpose_a=False, transpose_b=False, compute_mode='default')[源代码]¶
对矩阵
inp1
和inp2
进行矩阵乘法。当输入的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)
实际案例
>>> 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)