mindspore.ops.tensor_dot
- mindspore.ops.tensor_dot(x1, x2, axes)[源代码]
在指定轴上对Tensor a 和 b 进行点乘操作。
点乘操作可以在指定轴上计算 a 和 b 元素的乘积和。轴数量必须由x1和x2指定,并且该值必须在 a 和 b 的维度数量的范围内。
两个输入中选定的维度必须相互匹配。
axes = 0为外积。axes = 1为普通矩阵乘法(输入是2维的)。axes = 1与axes = ((1,),(0,))相同,其中 a 和 b 都是2维的。axes = 2与axes = ((1,2),(0,1))相同,其中 a 和 b 都是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))]) - 指定 a 和 b 计算轴,可为单个值,也可为长度为2的tuple或list。如果传递了单个值 N ,则自动从输入 a 的shape中获取最后N个维度,从输入 b 的shape中获取前N个维度,分别作为每个维度的轴。
返回:
Tensor,输出Tensor的shape为 \((N + M)\) 。其中 \(N\) 和 \(M\) 在两个输入中没有计算,是自由轴。
异常:
TypeError - x1 或 x2 不是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]]