Python-addmm()和addmm_()的用法详解

这篇博客详细解释了PyTorch中的addmm()和addmm_()函数,包括它们的数学公式和参数含义。通过实例展示了如何使用这两个函数进行矩阵运算,并给出了不同参数设置下的计算结果。最后总结了addmm和addmm_的使用注意事项,特别是 inplace操作的区别。
摘要由CSDN通过智能技术生成

目录

一、公式+函数解释

二、使用举例

mat+mat1和mat2的生成

 公式具体使用

=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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静静喜欢大白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值