赞
踩
深度学习框架,因为存在自动微分技术,可以自动计算梯度,这极大地提升了训练复杂神经网络模型的效率。从而无需繁琐的手动计算,避免错误的发生。
自动微分的核心原理是基于链式法则来递归地计算梯度。自动微分系统内置一些基础的数学函数和操作,通过基础函数和操作构建更复杂的函数,并自动计算其梯度。也因此,用户可以更加轻松地训练神经网络模型。
@ 一些前置知识:
【深度学习】S2 数学基础 P3 微积分(上)导数与微分
【深度学习】S2 数学基础 P4 微积分(下)偏导数与链式法则
深度学习框架 PyTorch 中,有两个实现自动微分的函数:
torch.autograd.grad()
backward()
本部分将调用两种深度学习函数实现一元函数公式 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) # 方法一:使用 autograd 函数 df_dx_1 = torch.autograd.grad(outputs=y, inputs=x, create_graph=True)[0] # 方法二:使用 backward 函数 y.backward() df_dx_2 = x.grad print(f"autograd 计算函数 f(x) 关于 x=1 的导数是 {df_dx_1.item()}") print(f"backward 计算函数 f(x) 关于 x=1 的梯度是 {df_dx_2.item()}")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。