目录
=1 × inputs + 1 ×(inputs_t @ inputs_t)具体使用
=N × inputs + 1 ×(inputs_t @ inputs_t)具体使用
=N × inputs + M ×(inputs_t @ inputs_t)具体使用
addmm_()的操作:inputs = 1 × inputs - 2 ×(inputs @ inputs_t)
一、公式+函数解释
在torch/_C/_VariableFunctions.py的有该定义,意义就是实现一下公式,也就是mat里的每个元素乘以beta,mat1和mat2进行矩阵乘法(左行乘右列,这个@是Python 3.5之后加入的矩阵乘法运算符)后再乘以alpha,最后将这2个结果加在一起:
换句话说,就是需要传入5个参数:
- beta+mat+alpha+mat1+mat2;
- 具体计算就是=mat * beta + alpha*(mat1@mat2),;
- 其中mat、mat1、mat2必须按照顺序传入,beta和alpha也是必须按照顺序传入,其他无所谓
- mat是位置参数,也就是在具体使用中位置可变,必须传入
- 其他为传入参数,mat1+mat2必须传入,但是当beta和alpha都是1的时候,可以不传入
源码实现
def addmm(self, beta=1, mat, alpha=1, mat1, mat2, out=None): # real signature unknown; restored from __doc__
"""
addmm(beta=1, mat, alpha=1, mat1, mat2, out=None) -> Tensor
Performs a matrix multiplication of the matrices :attr:`mat1` and :attr:`mat2`.
The matrix :attr:`mat` is added to the final result.
If :attr:`mat1` is a :math:`(n \times m)` tensor, :attr:`mat2` is a
:math:`(m \times p)` tensor, then :attr:`mat` must be
:ref:`broadcastable <broadcasting-semantics>` with a :math:`(n \times p)` tensor
and :attr:`out` will be a :math:`(n \times p)` tensor.
:attr:`alpha` and :attr:`beta` are scaling factors on matrix-vector product between
:attr:`mat1` and :attr`mat2` and the added matrix :attr:`mat` respectively.
.. math::
out = \beta\ mat + \alpha\ (mat1_i \mathbin{@} mat2_i)
For inputs of type `FloatTensor` or `DoubleTensor`, arguments :attr:`beta` and
:attr:`alpha` must be real numbers, otherwise they should be integers.
Arg