mindspore.ops.batch_dot

查看源文件
mindspore.ops.batch_dot(x1, x2, axes=None)[源代码]

计算 x1x2 中的向量点积。

说明

  • x1x2 的第零维表示batch数量, x1x2 数据类型为float32且秩大于或等于2。

output=x1[batch,:]·x2[batch,:]
参数:
  • x1 (Tensor) - 第一个batch向量。

  • x2 (Tensor) - 第一个batch向量。

  • axes (Union[int, tuple(int), list(int)]) - 指定计算轴。默认 None

返回:

Tensor

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> # case 1: axes is a tuple(axes of `x1` , axes of `x2` )
>>> x1 = mindspore.ops.ones([2, 2, 3])
>>> x2 = mindspore.ops.ones([2, 3, 2])
>>> axes = (-1, -2)
>>> output = mindspore.ops.batch_dot(x1, x2, axes)
>>> print(output)
[[[3. 3.]
  [3. 3.]]
 [[3. 3.]
  [3. 3.]]]
>>> print(output.shape)
(2, 2, 2)
>>> x1 = mindspore.ops.ones([2, 2]), mindspore.float32)
>>> x2 = mindspore.ops.ones([2, 3, 2]), mindspore.float32)
>>> axes = (1, 2)
>>> output = ops.batch_dot(x1, x2, axes)
>>> print(output)
[[2. 2. 2.]
 [2. 2. 2.]]
>>> print(output.shape)
(2, 3)
>>>
>>> # case 2: axes is None
>>> x1 = mindspore.ops.ones([6., 2., 3., 4.])
>>> x2 = mindspore.ops.ones([6., 5., 4., 8.])
>>> output = mindspore.ops.batch_dot(x1, x2)
>>> print(output.shape)
(6, 2, 3, 5, 8)
>>>
>>> # case 3: axes is a int data.
>>> x1 = mindspore.ops.ones([2, 2, 4])
>>> x2 = mindspore.ops.ones([2, 5, 4, 5])
>>> output = mindspore.ops.batch_dot(x1, x2, 2)
>>> print(output.shape)
(2, 2, 5, 5)