mindspore.ops.matmul
- mindspore.ops.matmul(x1, x2, dtype=None)[源代码]
计算两个数组的乘积。
Note
不支持NumPy参数 out 、 casting 、 order 、 subok 、 signature 、 extobj 。在GPU上支持的数据类型为np.float16和np.float32。在CPU上支持的数据类型为np.float16和np.float32。
参数:
x1 (Tensor) - 输入Tensor,不支持Scalar, x1 的最后一维度和 x2 的倒数第二维度相等,且 x1 和 x2 彼此支持广播。
x2 (Tensor) - 输入Tensor,不支持Scalar, x1 的最后一维度和 x2 的倒数第二维度相等,且 x1 和 x2 彼此支持广播。
dtype (
mindspore.dtype
, optional) - 指定输入Tensor的数据类型,默认:None。
返回:
Tensor或Scalar,矩阵乘积的输入。当 x1 和 x2 为一维向量时,输入为Scalar。
异常:
ValueError - x1 的最后一维度和 x2 的倒数第二维度不相等,或者输入的是Scalar。
ValueError - x1 和 x2 彼此不能广播。
- 支持平台:
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,)