自动微分 Autograd
深度学习框架,因为存在自动微分技术,可以自动计算梯度,这极大地提升了训练复杂神经网络模型的效率。从而无需繁琐的手动计算,避免错误的发生。
自动微分的核心原理是基于链式法则来递归地计算梯度。自动微分系统内置一些基础的数学函数和操作,通过基础函数和操作构建更复杂的函数,并自动计算其梯度。也因此,用户可以更加轻松地训练神经网络模型。
@ 一些前置知识:
【深度学习】S2 数学基础 P3 微积分(上)导数与微分
【深度学习】S2 数学基础 P4 微积分(下)偏导数与链式法则
一元函数自动微分案例
PyTorch 深度学习框架调用 torch.autograd.grad()
函数计算导数;以下是一个简单的一元函数自动微分案例;
函数为:
f ( x ) = x 2 + 2 x + 1 f(x) = x^2+2x+1 f(x)=x2+2x+1
完整代码为:
import torch
# 定义函数 f(x) = x^2 + 2x + 1
def f(x):
return x**2 + 2*x + 1
# 创建随机变量作为输入,例如 x = torch.tensor(1.0)
# 设置 requires_grad=True 以启用自动微分
x = torch.tensor(1.0, requires_grad=True)
# 计算 f(x) 的值
y = f(x)
# 计算 f(x) 对 x 的导数
df_dx = torch.autograd.grad(outputs=y, inputs=x, create_graph=True)[0]
print(f"函数 f(x) 关于 x=1 的导数是 {df_dx.item()}")
未完待续