mindspore.ops.addr
- mindspore.ops.addr(x, vec1, vec2, beta=1, alpha=1)[source]
Executes the outer-product of vec1 and vec2 and adds it to the matrix x.
If vec1 is a vector of size \(N\) and vec2 is a vector of size \(M\), then x must be broadcastable with a matrix of size \((N, M)\) and out will be a matrix of size \((N, M)\).
The optional values beta and alpha are the scale factors on the outer product between vec1 and vec2 and the added matrix x respectively. If beta is 0, then x will be ignored.
\[output = β x + α (vec1 ⊗ vec2)\]- Parameters
x (Tensor) – Vector to be added. The shape of the tensor is \((N, M)\).
vec1 (Tensor) – The first tensor to be multiplied. The shape of the tensor is \((N,)\).
vec2 (Tensor) – The second tensor to be multiplied. The shape of the tensor is \((M,)\).
beta (scalar[int, float, bool], optional) – Multiplier for x (β). The beta must be int or float or bool, Default: 1.
alpha (scalar[int, float, bool], optional) – Multiplier for vec1 ⊗ vec2 (α). The alpha must be int or float or bool, Default: 1.
- Returns
Tensor, the shape of the output tensor is \((N, M)\), has the same dtype as x.
- Raises
TypeError – If x, vec1, vec2 is not a Tensor.
TypeError – If inputs x, vec1, vec2 are not the same dtype.
ValueError – If x is not a 2-D Tensor. If vec1, vec2 is not a 1-D Tensor.
- Supported Platforms:
Ascend
GPU
CPU
Examples
>>> 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.]]