mindspore.ops.addr

mindspore.ops.addr(vec1, vec2, beta=1, alpha=1)[源代码]

计算 vec1vec2 的外积,并将其添加到 x 中。

如果 vec1 是一个大小为 \(N\) 的向量, vec2 是一个大小为 \(M\) 的向量,那么 x 必须是可广播的,且 带有一个大小为 \((N, M)\) 的矩阵,同时返回是一个大小为 \((N, M)\) 的矩阵。

可选值 bataalpha 分别是 vec1vec2 外积的扩展因子以及附加矩阵 x 。如果 beta 为0,那么 x 将被忽略。

\[output = β x + α (vec1 ⊗ vec2)\]
参数:
  • vec1 (Tensor) - 第一个需要相乘的Tensor,shape大小为 \((N,)\)

  • vec2 (Tensor) - 第二个需要相乘的Tensor,shape大小为 \((M,)\)

  • beta (scalar[int, float, bool], 可选) - x (β)的乘法器。 beta 必须是int或float或bool类型,默认值:1。

  • alpha (scalar[int, float, bool], 可选) - vec1vec2 (α)的乘法器。 alpha 必须是int或float或bool类型,默认值:1。

返回:

Tensor,shape大小为 \((N, M)\) ,数据类型与 x 相同。

异常:
  • TypeError - xvec1vec2 不是Tensor。

  • TypeError - xvec1vec2 的数据类型不一致。

  • ValueError - 如果 x 不是一个二维Tensor。如果 vec1vec2 不是一个一维Tensor。

支持平台:

Ascend GPU CPU

样例:

>>> x = Tensor(np.array([[2., 2.], [3., 2.], [3., 4.]], np.float32))
>>> vec1 = Tensor(np.array([2., 3., 2.], np.float32))
>>> vec2 = Tensor(np.array([3, 4], np.float32))
>>> output = ops.addr(x, vec1, vec2)
>>> print(output)
[[ 8. 10.]
 [12. 14.]
 [ 9. 12.]]