mindspore.numpy.tensordot

mindspore.numpy.tensordot(a, b, axes=2)[源代码]

沿指定轴计算Tensor的点积。

给定两个Tensor ab ,以及一个包含两个类数组对象的类数组对象 (a_axes, b_axes),对 ab 的元素(分量)在 a_axesb_axes 指定的轴上求逐元素乘积之和。第三个参数可以是一个非负整数标量 N ,如果是 N ,则对 a 的最后 N 个维度和 b 的前 N 个维度进行求和。 常见的三种用例是:

  • axes = 0 :Tensor积

  • axes = 1 :Tensor点积

  • axes = 2 :(默认)Tensor双重缩并

axes 为整数时,计算的顺序是:首先是 a 的第-N轴和 b 的第0轴,最后是 a 的 -1 轴和 b 的第N轴。 对于多个轴进行求和且它们不是 a(b) 的最后(b的第一个)轴时,参数 axes 应由两个相同长度的序列组成,第一个序列应用于 a ,第二个序列应用于 b ,依此类推。 结果的shape由第一个Tensor的未缩并轴以及第二个Tensor的未缩并轴组成。

说明

在 CPU 上,支持的dtype是 np.float16 和 np.float32。在 GPU 上,支持的dtype是 np.float16 和 np.float32。

参数:
  • a (Tensor) - 需计算点积的Tensor。

  • b (Tensor) - 需计算点积的Tensor。

  • axes (int或int的序列) -

    类int值:如果是整数 N ,则按顺序对 a 的最后 N 个轴和 b 的前 N 个轴进行求和。对应的轴的大小必须匹配。

    int的序列:一个包含要进行求和的轴的列表,第一个序列应用于 a ,第二个序列应用于 b 。 两个类数组元素必须具有相同长度。

返回:

Tensor或元素为Tensor的list,输入Tensor的点积。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore.numpy as np
>>> a = np.ones((3, 4, 5))
>>> b = np.ones((4, 3, 2))
>>> output = np.tensordot(a, b, axes=([1,0],[0,1]))
>>> print(output.shape)
(5, 2)