mindspore.ops.BatchMatMul
- class mindspore.ops.BatchMatMul(transpose_a=False, transpose_b=False)[源代码]
基于batch维度的两个Tensor的矩阵乘法。
两个输入Tensor的秩必须不小于 2,如果是GPU或者CPU环境,两个输入Tensor必须具有相同的秩。
- 参数:
transpose_a (bool,可选) - 如果为
True
,则在乘法之前转置 x 的最后两个维度。默认值:False
。transpose_b (bool,可选) - 如果为
True
,则在乘法之前转置 y 的最后两个维度。默认值:False
。
- 输入:
x (Tensor) - 输入相乘的第一个Tensor,其shape为
,其中 表示批处理大小,可以是多维度, 和 是最后两个维度的大小。如果 transpose_a 为True,则其shape必须为 。y (Tensor) - 输入相乘的第二个Tensor,其shape为
。如果 transpose_b 为True,则其shape必须为 。
- 输出:
Tensor,输出Tensor的shape为
。- 异常:
TypeError - transpose_a 或 transpose_b 不是bool。
ValueError - x 的shape长度不等于 y 的shape长度或输入的shape长度小于2。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> import numpy as np >>> from mindspore import Tensor, ops >>> x = Tensor(np.ones(shape=[2, 4, 1, 3]), mindspore.float32) >>> y = Tensor(np.ones(shape=[2, 4, 3, 4]), mindspore.float32) >>> batmatmul = ops.BatchMatMul() >>> output = batmatmul(x, y) >>> print(output.shape) (2, 4, 1, 4) >>> x = Tensor(np.ones(shape=[2, 4, 3, 1]), mindspore.float32) >>> y = Tensor(np.ones(shape=[2, 4, 3, 4]), mindspore.float32) >>> batmatmul = ops.BatchMatMul(transpose_a=True) >>> output = batmatmul(x, y) >>> print(output.shape) (2, 4, 1, 4)