mindspore.ops.tensor_dot

mindspore.ops.tensor_dot(x1, x2, axes)[源代码]

在指定轴上对Tensor ab 进行点乘操作。

点乘操作可以在指定轴上计算 ab 元素的乘积和。轴数量必须由x1和x2指定,并且该值必须在 ab 的维度数量的范围内。

两个输入中选定的维度必须相互匹配。

axes = 0为外积。axes = 1为普通矩阵乘法(输入是2维的)。axes = 1与axes = ((1,),(0,))相同,其中 ab 都是2维的。axes = 2与axes = ((1,2),(0,1))相同,其中 ab 都是3维的。

参数:
  • x1 (Tensor) - tensor_dot的第一个输入Tensor,其数据类型为float16或float32。

  • x2 (Tensor) - tensor_dot的第二个输入Tensor,其数据类型为float16或float32。

  • axes (Union[int, tuple(int), tuple(tuple(int)), list(list(int))]) - 指定 ab 计算轴,可为单个值,也可为长度为2的tuple或list。如果传递了单个值 N ,则自动从输入 a 的shape中获取最后N个维度,从输入 b 的shape中获取前N个维度,分别作为每个维度的轴。

返回:

Tensor,输出Tensor的shape为 \((N + M)\) 。其中 \(N\)\(M\) 在两个输入中没有计算,是自由轴。

异常:
  • TypeError - x1x2 不是Tensor。

  • TypeError - axes 不是int、tuple或list。

支持平台:

Ascend GPU CPU

样例:

>>> from mindspore import Tensor, ops
>>> import mindspore
>>> import numpy as np
>>> input_x1 = Tensor(np.ones(shape=[1, 2, 3]), mindspore.float32)
>>> input_x2 = Tensor(np.ones(shape=[3, 1, 2]), mindspore.float32)
>>> output = ops.tensor_dot(input_x1, input_x2, ((0,1),(1,2)))
>>> print(output)
[[2. 2. 2]
 [2. 2. 2]
 [2. 2. 2]]