Pytorch基础知识-链式法则

2019-11-17 22:34:12 浏览数 (1)

上次课习得单输出和多输出的感知机模型,并推导了权值上的信息更新法则,本节介绍神经网络结构中一个最最重要的法则:即链式法则。将最后一层的误差层层传导到中间层上,进而更新出最适宜的梯度信息,以更新出最佳权值,达到最优化效果。

首先对链式法则中常用的公式进行介绍:

这里要牢记Sum Rule(梯度加和)、Difference Rule(梯度相减)、链式法则等公式。

这里要牢记Sum Rule(梯度加和)、Difference Rule(梯度相减)、链式法则等公式。

因此在感知机中

可以使用链式法则一步步转转化问题

代码语言:javascript复制
import torch
import torch.nn.functional as F
import torch.autograd
x = torch.tensor(1.)
w1 = torch.tensor(2., requires_grad=True)
b1 = torch.tensor(1.)
w2 = torch.tensor(2., requires_grad=True)
b2 = torch.tensor(1.)

y1 = x*w1 b1
y2 = y1*w2   b2

dy2_dy1 = torch.autograd.grad(y2, [y1], retain_graph=True)[0]
dy1_dw1 = torch.autograd.grad(y1, [w1], retain_graph=True)[0]
dy2_dw1 = torch.autograd.grad(y2, [w1], retain_graph=True)[0]

print('dy2_dy1*dy1_dw1:', dy2_dy1*dy1_dw1)
print('dy2_dw1:', dy2_dw1)

输出为

代码语言:javascript复制
dy2_dy1*dy1_dw1: tensor(2.)
dy2_dw1: tensor(2.)

由结果可见 利用链式法则求得的结果与直接求导出的结果一致。

0 人点赞