当前位置: 首页 > news >正文

【paddle】详解 padde.autograd.backward

目录

  • backward
  • 二次函数案例
  • paddle 代码
  • pytorch 代码

backward

paddle.autograd.backward(tensors, grad_tensors=None, retain_graph=False)[源代码]

参数

  • tensors (list[Tensor]) – 将要计算梯度的 Tensors 列表。Tensors 中不能包含有相同的 Tensor。
  • grad_tensors (None|list[Tensor|None],可选) – tensors 的初始梯度值。如果非 None,必须和 tensors 有相同的长度,并且如果其中某一 Tensor 元素为 None,则该初始梯度值为填充 1.0 的默认值;如果是 None,所有的 tensors 的初始梯度值为填充 1.0 的默认值。默认值:None。
  • retain_graph (bool,可选) – 如果为 False,反向计算图将被释放。如果在 backward()之后继续添加 OP,需要设置为 True,此时之前的反向计算图会保留也可以视为静态计算图。将其设置为 False 会更加节省内存。默认值:False, 此时相当于动态计算图。

需要注意的是 grad_tensors 默认是 None, 如果给该 参数赋值与自变量相同维数的张量,则会按照该张量中的元素作为梯度的权重,一般在多节点机器学习任务中使用。

如果需要计算高阶微分信息或者反复求梯度,例如 Hessian 矩阵则也需要 retain_graph 为真。

二次函数案例

f ( x ) = x 0 2 + x 1 2 f(x)=x_0^2+x_1^2 f(x)=x02+x12
∇ f ( x ) = [ 2 x 0 2 x 1 ] \nabla f(x)= \left[\begin{matrix} 2x_0\\ 2x_1 \end{matrix}\right] f(x)=[2x02x1]
x = [ 1 , 2 ] ⊤ x=[1,2]^\top x=[1,2] ∇ f ( x ) = [ 2 , 4 ] ⊤ \nabla f(x)=[2,4]^\top f(x)=[2,4]

paddle 代码

import paddle
root = paddle.to_tensor([1.0, 2.0], dtype='float32', stop_gradient=False)
def fobj(x):
    return(paddle.sum(x**2))
y = fobj(root)
paddle.autograd.backward(y,None,True)
print('paddle:',root.grad)
print(2*root)

pytorch 代码

import torch
root = torch.tensor([1.0, 2.0], dtype=torch.float32, requires_grad=True)
def fobj(x):
    return torch.sum(x**2)
y = fobj(root)
y.backward(retain_graph=True)
print('torch:',root.grad)
print(root*2)

相关文章:

  • 人工智能发展全景与DeepSeek-R1
  • 设计模式Python版 备忘录模式
  • uni-app集成sqlite
  • Vue组件间通信的方式
  • 升级Office软件后,Windows 系统右键里没有新建Word、Excel、PowerPoint文件的解决办法
  • OA办公系统自动渗透测试过程
  • 树和二叉树
  • 线性回归 (Linear Regression)案例分析1
  • 数据处理(二)| 打磨数据,提升模型:全面解读图像数据质量评估
  • 在自己的数据上复现一下LlamaGen
  • 开发HarmonyOS NEXT版五子棋游戏实战
  • 【Linux】vim 设置
  • 深入理解 Linux 中的 last 和 lastb 命令
  • OpenGL 04--GLSL、数据类型、Uniform、着色器类
  • Unity XR-XR Interaction Toolkit开发使用方法(十一)组件介绍(XR Interactable)
  • 在单位,领导不说,但自己得懂的7个道理
  • LSM-Tree (日志结构合并树)
  • Linux 运维工具-下载多个链接wget,aria2c
  • 06.【C++】模板初阶(template<typename T>,充分复用函数,函数模板和类模板的使用)
  • C#实现本地Deepseek模型及其他模型的对话
  • 企业产品网站模板/什么是关键词举例说明
  • 帮人做诈骗网站获利35万退赃部分/网络营销的六大特征
  • 专业app网站建设/公司网站如何推广
  • 电商网站怎么制作/双11各大电商平台销售数据
  • 电子业网站建设/杭州排名推广
  • 东莞做网站要多少钱/运营培训班