前言:
链式法则是深度学习中比较基础核心的一部分,
这里先简单的回顾一下感知机模型,然后常用的导数方程,以及
链式求导法则
一 感知机
简单回顾一下前面感知机模型,这是一种最简单的单层网络结构
输入
前向传播
输出
, 这里面用的是sigmod函数作为激活函数输出
损失函数
则
整个梯度可以看作两个部分,一部分只跟输出有关系,另一部分跟输入有关系
二 常用导数方程
2.1
2.2
2.3
2.4
2.5 f*g=
2.6
2.7
2.8 假设向量之间的依赖关系为 (x,y,z 都是向量)
2.9 假设向量之间的依赖关系为 (其中 x,y 为m,n的向量,z为标量)
三 例子
# -*- coding: utf-8 -*-
"""
Created on Tue Feb 21 16:40:49 2023
@author: chengxf2
"""
import torch
import torch.autograd as autograd
def grad():
x = torch.tensor(1.0)
w1 = torch.tensor(2.3, requires_grad= True)
b1 = torch.tensor(1.0)
w2 = torch.tensor(3.3, requires_grad= True)
b2 = torch.tensor(1.0)
y1 = w1*x+b1
y2 = w2*y1+b2
dy2_dy1 =autograd.grad(y2, [y1], retain_graph=True)
dy1_dw1 = autograd.grad(y1, [w1], retain_graph=True)
dy2_dw1 = autograd.grad(y2, [w1], retain_graph = True)
a = dy1_dw1[0]*dy2_dy1[0]
print("\n 本地计算 ",a ,"\t API 函数计算",dy2_dw1)
if __name__ == "__main__":
grad()