torch.addr — PyTorch 2.7 documentation (original) (raw)
torch.addr(input, vec1, vec2, *, beta=1, alpha=1, out=None) → Tensor¶
Performs the outer-product of vectors vec1
and vec2
and adds it to the matrix input
.
Optional values beta
and alpha
are scaling factors on the outer product between vec1
and vec2
and the added matrixinput
respectively.
out=β input+α (vec1⊗vec2)\text{out} = \beta\ \text{input} + \alpha\ (\text{vec1} \otimes \text{vec2})
If beta
is 0, then the content of input
will be ignored, and nan and inf in it will not be propagated.
If vec1
is a vector of size n and vec2
is a vector of size m, then input
must bebroadcastable with a matrix of size(n×m)(n \times m) and out
will be a matrix of size(n×m)(n \times m).
Parameters
- input (Tensor) – matrix to be added
- vec1 (Tensor) – the first vector of the outer product
- vec2 (Tensor) – the second vector of the outer product
Keyword Arguments
- beta (Number , optional) – multiplier for
input
(β\beta) - alpha (Number , optional) – multiplier for vec1⊗vec2\text{vec1} \otimes \text{vec2} (α\alpha)
- out (Tensor, optional) – the output tensor.
Example:
vec1 = torch.arange(1., 4.) vec2 = torch.arange(1., 3.) M = torch.zeros(3, 2) torch.addr(M, vec1, vec2) tensor([[ 1., 2.], [ 2., 4.], [ 3., 6.]])