# mindspore.ops.MatMul

class mindspore.ops.MatMul(transpose_a=False, transpose_b=False)[source]

Multiplies matrix a and matrix b.

$(Output)_{i j}=\sum_{k=1}^{p} a_{i k} b_{k j}=a_{i 1} b_{1 j}+a_{i 2} b_{2 j}+\cdots+a_{i p} b_{p j}, p\in N$

where the $$i,j$$ indicates the output of the i-th row and j-th column element.

Parameters
• transpose_a (bool) – If true, a is transposed before multiplication. Default: False.

• transpose_b (bool) – If true, b is transposed before multiplication. Default: False.

Inputs:
• a (Tensor) - The first tensor to be multiplied. The shape of the tensor is $$(N, C)$$. If transpose_a is True, its shape must be $$(N, C)$$ after transpose.

• b (Tensor) - The second tensor to be multiplied. The shape of the tensor is $$(C, M)$$. If transpose_b is True, its shape must be $$(C, M)$$ after transpose.

Outputs:

Tensor, the shape of the output tensor is $$(N, M)$$.

Raises
• TypeError – If transpose_a or transpose_b is not a bool.

• ValueError – If the column of matrix dimensions of a is not equal to the row of matrix dimensions of b.

• ValueError – If length of shape of a or b is not equal to 2.

Supported Platforms:

Ascend GPU CPU

Examples

>>> a = Tensor(np.ones(shape=[1, 3]), mindspore.float32)
>>> b = Tensor(np.ones(shape=[3, 4]), mindspore.float32)
>>> matmul = ops.MatMul()
>>> output = matmul(a, b)
>>> print(output)
[[3. 3. 3. 3.]]