mindspore.ops.addmv

mindspore.ops.addmv(x, mat, vec, *, beta=1, alpha=1)[源代码]

matvec 相乘,且将输入向量 x 加到最终结果中。

如果 mat 是一个大小为 \((N, M)\) Tensor, vec 一个大小为 \(M\) 的一维Tensor,那么 x 必须是可广播的,且 带有一个大小为 \(N\) 的一维Tensor。这种情况下 out 是一个大小为 \(N\) 的一维Tensor。

可选值 bataalpha 分别是 matvec 矩阵向量的乘积和附加Tensor x 的扩展因子。如果 beta 为0,那么 x 将被忽略。

\[output = β x + α (mat @ vec)\]
参数:
  • x (Tensor) - 被加的向量,Tensor的shape大小为 \((N,)\)

  • mat (Tensor) - 第一个需要相乘的Tensor,shape大小为 \((N, M)\)

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

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

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

返回:

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

异常:
  • TypeError - matvecx 不是Tensor。

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

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

  • ValueError - 如果 vec 不是一个一维Tensor。

支持平台:

Ascend GPU CPU

样例:

>>> x = Tensor(np.array([2., 3.]).astype(np.float32))
>>> mat = Tensor(np.array([[2., 5., 3.], [4., 2., 2.]]).astype(np.float32))
>>> vec = Tensor(np.array([3., 2., 4.]).astype(np.float32))
>>> output = ops.addmv(x, mat, vec)
>>> print(output)
[30. 27.]