pytorch中backward参数含义

pytorch中backward参数含义

1.标量与矢量问题

  • backward参数是否必须取决于因变量的个数,从数据中表现为标量和矢量;

例如标量时 y = 一 个 明 确 的 值 y=一个明确的值 y= 矢量时 y = [ y 1 , y 2 ] y=[y1,y2] y=[y1y2]

2.backward 参数计算公式

  • 当因变量公式不是一个标量时,需要显式添加一个参数进行计算,以pytorch文档示例说明:
import torch

a = torch.tensor([2., 3.], requires_grad=True)
b = torch.tensor([6., 4.], requires_grad=True)
Q = 3*a**3 - b**2
  • 例如求解公式 Q = 3 a 3 − b 2 Q = 3a^3 - b^2 Q=3a3b2,此时Q是一个矢量,即2*1的向量,那么就需要显式添加参数去计算 ∂ Q ∂ a = 9 a 2 \frac{\partial Q}{\partial a} = 9a^2 aQ=9a2 ∂ Q ∂ b = − 2 b \frac{\partial Q}{\partial b} = -2b bQ=2b
external_grad = torch.tensor([1., 1.])
Q.backward(gradient=external_grad)
  • 可以看到backward参数为[1,1],具体计算的含义,我们把Q公式拆分为标量形式即:
    Q 1 = 3 a 1 3 − b 1 2 Q_1 = 3a_1^3 - b_1^2 Q1=3a13b12
    Q 2 = 3 a 2 3 − b 2 2 Q_2 = 3a_2^3 - b_2^2 Q2=3a23b22

    • 雅可比公式形式
      ∂ Q ∂ a = [ ∂ Q 1 ∂ a 1 ∂ Q 1 ∂ a 2 ∂ Q 2 ∂ a 1 ∂ Q 2 ∂ a 2 ] \frac{\partial Q}{\partial a} =\left[ \begin{matrix} \frac{\partial Q_1}{\partial a_1} & \frac{\partial Q_1}{\partial a_2} \\ \\ \frac{\partial Q_2}{\partial a_1}& \frac{\partial Q_2}{\partial a_2} \end{matrix} \right] aQ=a1Q1a1Q2a2Q1a2Q2
      ∂ Q ∂ b = [ ∂ Q 1 ∂ b 1 ∂ Q 1 ∂ b 2 ∂ Q 2 ∂ b 1 ∂ Q 2 ∂ b 2 ] \frac{\partial Q}{\partial b} =\left[ \begin{matrix} \frac{\partial Q_1}{\partial b_1} & \frac{\partial Q_1}{\partial b_2} \\ \\ \frac{\partial Q_2}{\partial b_1}& \frac{\partial Q_2}{\partial b_2} \end{matrix} \right] bQ=b1Q1b1Q2b2Q1b2Q2
  • backward参数为[1,1],计算公式为
    [ ∂ Q 1 ∂ a 1 ∂ Q 2 ∂ a 1 ∂ Q 1 ∂ a 2 ∂ Q 2 ∂ a 2 ] ∗ [ 1 1 ] = [ 36 , 81 ] \left[ \begin{matrix} \frac{\partial Q_1}{\partial a_1} & \frac{\partial Q_2}{\partial a_1} \\ \\ \frac{\partial Q_1}{\partial a_2}& \frac{\partial Q_2}{\partial a_2} \end{matrix} \right]* \left[ \begin{matrix} 1 \\1 \end{matrix} \right]=[36,81] a1Q1a2Q1a1Q2a2Q2[11]=[36,81]
    [ ∂ Q 1 ∂ b 1 ∂ Q 2 ∂ b 1 ∂ Q 1 ∂ b 2 ∂ Q 2 ∂ b 2 ] ∗ [ 1 1 ] = [ − 12 , − 8 ] \left[ \begin{matrix} \frac{\partial Q_1}{\partial b_1} & \frac{\partial Q_2}{\partial b_1} \\ \\ \frac{\partial Q_1}{\partial b_2}& \frac{\partial Q_2}{\partial b_2} \end{matrix} \right]* \left[ \begin{matrix} 1 \\1 \end{matrix} \right]=[-12,-8] b1Q1b2Q1b1Q2b2Q2[11]=[12,8]

3.autograd

torch.autograd是计算向量和雅可比公式的乘积的引擎:
在这里插入图片描述

  • 其中J就是因变量与自变量的雅可比公式,v即backward中的参数;类比于第二节的例子可对应;
  • 前向传播得到数值后,利用此形式计算直接后向传播计算出损失函数对应各权值的梯度下降值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值