mindspore.ops.matmul

mindspore.ops.matmul(x1, x2, dtype=None)[源代码]

计算两个数组的乘积。

Note

不支持NumPy参数 outcastingordersuboksignatureextobj 。在GPU上支持的数据类型为np.float16和np.float32。在CPU上支持的数据类型为np.float16和np.float32。

参数:

  • x1 (Tensor) - 输入Tensor,不支持Scalar, x1 的最后一维度和 x2 的倒数第二维度相等,且 x1x2 彼此支持广播。

  • x2 (Tensor) - 输入Tensor,不支持Scalar, x1 的最后一维度和 x2 的倒数第二维度相等,且 x1x2 彼此支持广播。

  • dtype (mindspore.dtype, optional) - 指定输入Tensor的数据类型,默认:None。

返回:

Tensor或Scalar,矩阵乘积的输入。当 x1x2 为一维向量时,输入为Scalar。

异常:

  • ValueError - x1 的最后一维度和 x2 的倒数第二维度不相等,或者输入的是Scalar。

  • ValueError - x1x2 彼此不能广播。

支持平台:

Ascend GPU CPU

样例:

>>> from mindspore import Tensor, ops
>>> import mindspore
>>> # case 1 : Reasonable application of broadcast mechanism
>>> x1 = Tensor(np.arange(2*3*4).reshape(2, 3, 4), mindspore.float32)
>>> x2 = Tensor(np.arange(4*5).reshape(4, 5), mindspore.float32)
>>> output = ops.matmul(x1, x2)
>>> print(output)
[[[  70.   76.   82.   88.   94.]
[ 190.  212.  234.  256.  278.]
[ 310.  348.  386.  424.  462.]]
[[ 430.  484.  538.  592.  646.]
[ 550.  620.  690.  760.  830.]
[ 670.  756.  842.  928. 1014.]]]
>>> print(output.shape)
(2, 3, 5)
>>> # case 2 : the rank of `x1` is 1
>>> x1 = Tensor(np.ones([1, 2]), mindspore.float32)
>>> x2 = Tensor(np.ones([2,]), mindspore.float32)
>>> output = ops.matmul(x1, x2)
>>> print(output)
[2.]
>>> print(output.shape)
(1,)