理解PyTorch反向传播:示例代码梯度输出结果求分步解释
PyTorch标量自动求导结果推导
你看到的梯度结果本质是目标函数f对三个输入变量的偏导数值,我们可以通过基础的微积分规则分步推导:
步骤1:梳理函数关系
首先把代码里的计算逻辑转换为数学表达式:
- 中间变量
q = x + y - 最终求导的目标函数
f = q * z
也可以直接展开为输入变量的表达式:f = (x + y) * z
步骤2:分别计算偏导数
求导时把非求导变量都看作常数即可:
- 对x求偏导∂f/∂x:导数结果为z,代入z=5,得到值为5,对应x的梯度
- 对y求偏导∂f/∂y:导数结果为z,代入z=5,得到值为5,对应y的梯度
- 对z求偏导∂f/∂z:导数结果为x+y,代入x=4、y=-3,计算得4+(-3)=1,对应z的梯度
链式法则验证(可选)
如果你习惯用链式法则分步计算,结果也完全一致:
- 先算∂f/∂q = z,∂q/∂x=1、∂q/∂y=1
- 因此∂f/∂x = ∂f/∂q * ∂q/∂x = 5 * 1 = 5
- ∂f/∂y = ∂f/∂q * ∂q/∂y =5 *1=5
- ∂f/∂z = q = x+y = 4 + (-3) =1
整个推导结果和代码输出完全匹配。
内容的提问来源于stack exchange,提问作者CaitlinG
相关产品推荐
相关产品推荐

