计算图与自动微分
1.自动微分概念
自动微分是利用链式法则来自动计算的一个复合函数的梯度
2.计算图

3.案例
计算步骤
当x=1,w=0,b=0时,可以得到
4.前向模式和反向模式
这个多项目乘法可以从后往前算,也可以从前往后算
如果参数与函数之间有多条路径,可以将这多条路径上的导数再进行相加,得到最终的梯度
5.Pytorch案例
点击查看代码
import torch
a = torch.tensor(2.0, requires_grad=True)
b = torch.tensor(1.0, requires_grad=True)
x = 2 * a + 3 * b
y = 5 * a * a + 3 * b * b * b
z = 2 * x + 3 * y
print("a:", a)
print("b:", b)
print("x:", x)
print("y:", y)
print("z:", z)
z.backward()
print("Gradient at a=2.0", a.grad)
---------
a: tensor(2., requires_grad=True)
b: tensor(1., requires_grad=True)
x: tensor(7., grad_fn=<AddBackward0>)
y: tensor(23., grad_fn=<AddBackward0>)
z: tensor(83., grad_fn=<AddBackward0>)
Gradient at a=2.0 tensor(64.)
6.自动微分反向传播模式下的前馈神经网络反向传播算法
前馈神经网络的训练过程可以分为以下三步
1.前向计算每一层的状态和激活值,直到最后一层
2.反向计算每一层的参数的偏导
3.更新参数
7.静态计算图,动态计算图
静态计算图是在编译时构建计算图,计算图构建好之后在程序运行时不能改变。
Theano和Tensorflow
动态计算图是在程序运行时动态构建。两种构建方式各有优缺点。
DyNet,Chainer和PyTorch
静态计算图在构建时可以进行优化,并行能力强,但灵活性比较差低。动态计算图则不容易优化,当不同输入的网络结构不一致时,难以并行计算,但是灵活性比较高。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)