预备知识02-自动微分

发布时间:2024年01月17日

线性代数、微积分

这两个不作介绍,可以点击下方链接阅读原文

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






文章来源:https://blog.csdn.net/weixin_50601779/article/details/135637007
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。