mindspore.Tensor.matmul

查看源文件
mindspore.Tensor.matmul(tensor2)

计算两个数组的矩阵乘积。

说明

不支持NumPy参数 outcastingordersuboksignatureextobjselftensor2 的数据类型必须一致。 在Ascend平台上,selftensor2 的维度必须在 1 到 6 之间。 在GPU平台上,selftensor2 支持的数据类型是 ms.float16 和 ms.float32。

参数:
  • tensor2 (Tensor) - 输入Tensor,不支持Scalar, self 的最后一维度和 tensor2 的倒数第二维度相等,且 selftensor2 彼此支持广播。

返回:

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

异常:
  • TypeError - self 的dtype和 tensor2 的dtype不一致。

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

  • ValueError - selftensor2 彼此不能广播。

  • RuntimeError - 在Ascend平台上, selftensor2 的维度小于 1 或大于 6。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor
>>> # case 1 : Reasonable application of broadcast mechanism
>>> input = Tensor(np.arange(2 * 3 * 4).reshape(2, 3, 4), mindspore.float32)
>>> other = Tensor(np.arange(4 * 5).reshape(4, 5), mindspore.float32)
>>> output = input.matmul(other)
>>> 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 `tensor2` is 1
>>> input = Tensor(np.ones([1, 2]), mindspore.float32)
>>> other = Tensor(np.ones([2,]), mindspore.float32)
>>> output = input.matmul(other)
>>> print(output)
[2.]
>>> print(output.shape)
(1,)