mindspore.ops.addmv

查看源文件
mindspore.ops.addmv(input, mat, vec, *, beta=1, alpha=1)[源代码]

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

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

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

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

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

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

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

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

返回:

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

异常:
  • TypeError - matvecinput 不是Tensor。

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

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

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

支持平台:

Ascend GPU CPU

样例:

>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> input = 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(input, mat, vec)
>>> print(output)
[30. 27.]