01 | PyTorch的自动求导系统AutoGrad
从前述课程中,我们已经知道:PyTorch训练机器学习或深度学习模型时,依赖于计算优化目标函数(如Loss函数)时的反向传播梯度,并以此层层求导更新每个计算图中结点的数值(权重)。
然而,深度学习架构中经常面临成百上千的待确定参数,而这意味着需要对几百个参数进行导数运算,对于人工而言无疑是困难且低效的。
PyTorch为此提供了自动求导系统AutoGrad,只需要我们根据模型动态搭建好正向计算图,继而调用AutoGrad系统提供“backward”方法以实现模型训练过程。
AutoGrad中最常用的方法是**“torch.autograd.backward()**”,其作用就是自动求取计算图中各个结点的梯度,主要参数有四个:
-
tensors:表示用于求导的张量,如常用的目标Loss函数
-
retain_graph:标记是否要保留计算图,默认情况下一次反向传播结束后,即销毁计算图以节省内存空间
-
create_graph:创建导数的计算图,尤其用于高阶求导(如二阶偏导数)
-
grad_tensors:多梯度权重,用于在多维目标训练时指定,以计算最终的梯度
02 | Backward()使用介绍
为了进一步说明AutoGrad机制,这里我们再次使用之前课程中的示例:
y=(x+w)×(w+1) y = (x + w) \times (w + 1) y=(x+w)×(w+1)
其针对w的求导公式为:
∂y∂w=∂y∂a∂a∂x+∂y∂b∂b∂w \frac{\partial y}{\partial w}=\frac{\partial y}{\partial a}\frac{\partial a}{\partial x} + \frac{\partial y}{\partial b}\frac{\partial b}{\partial w} ∂w∂y=∂a∂y<

最低0.47元/天 解锁文章
955

被折叠的 条评论
为什么被折叠?



