当前位置:   article > 正文

【深度学习】S2 数学基础 P5 自动微分

【深度学习】S2 数学基础 P5 自动微分

自动微分 Autograd

深度学习框架,因为存在自动微分技术,可以自动计算梯度,这极大地提升了训练复杂神经网络模型的效率。从而无需繁琐的手动计算,避免错误的发生。

自动微分的核心原理是基于链式法则来递归地计算梯度。自动微分系统内置一些基础的数学函数和操作,通过基础函数和操作构建更复杂的函数,并自动计算其梯度。也因此,用户可以更加轻松地训练神经网络模型

@ 一些前置知识:
【深度学习】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()}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/99718
推荐阅读
相关标签
  

闽ICP备14008679号