这两个不作介绍,可以点击下方链接阅读原文
2.3. 线性代数 — 动手学深度学习 2.0.0 documentation (d2l.ai)
2.4. 微积分 — 动手学深度学习 2.0.0 documentation (d2l.ai)
求导是几乎所有深度学习优化算法的关键步骤。虽然求导的计算很简单,只需要一些基本的微积分。 但对于复杂的模型,手工进行更新是一件很痛苦的事情(而且经常容易出错)。
自动微分是计算一个函数在指定值上的导数
深度学习框架通过自动计算导数,即自动微分(automatic differentiation)来加快求导。
1.会有一个计算图
2.两种模式
? 正向积累
? 反向积累
框架都使用的反向积累
对标量求梯度
import torch
x = torch.arange(4.0)
// 设置需要计算梯度
x.requires_grad_(True) # 等价于x=torch.arange(4.0,requires_grad=True)
// 查看x的梯度值
x.grad # 默认值是None
y = 2 * torch.dot(x, x)
// 反向传播计算梯度
y.backward()
// 打印梯度
x.grad
// 反向传播计算梯度
y.backward()
// 打印梯度
x.grad