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

pytorch自动微分

  1. 一、torch.autograd.backward(tensors, grad_tensors=None, retain_graph=None, create_graph=False)功能:自动求取梯度

    • grad_tensors:多梯度权重
      # 自动求取梯度
      # import torch
      # w = torch.tensor([1.],requires_grad=True)
      # x = torch.tensor([2.],requires_grad=True)
      # a = torch.add(w, x) #逐位相加
      # b = torch.add(w, 1)
      # y = torch.mul(a, b)# 逐位相乘
      #
      # c = y.backward(retain_graph = True)
      # print(c)
    • create_graph:创建导数计算图,用于高阶求导
    • retain_graph:保存计算图
    • tensors:用于求导的张量,如 loss
    • 2、torch.autograd.grad(outputs, inputs, grad_outputs=None, retain_graph=None, create_graph=False)功能:求取梯度
      • outputs:用于求导的张量,如 loss
      • inputs:需要梯度的张量
      • create_graph:创建导数计算图,用于高阶求导
      • retain_graph:保存计算图
      • grad_outputs:多梯度权重
      • # 求取梯度
        # import torch
        # x = torch.tensor([3.],requires_grad=True)
        # y = torch.pow(x, 2)
        # grad_1 = torch.autograd.grad(y, x, create_graph = True)
        # grad_2 = torch.autograd.grad(grad_1[0],x)
        # print(grad_2)
        
      • 实例
      • # 实例,求y=x方的一阶与二阶偏导
        import torch
        x = torch.tensor([3.], requires_grad=True)
        y = torch.pow(x,2)
        
        #求取一阶导数
        grad_1 =torch.autograd.grad(y,x,create_graph=True)
        
        #求取二阶导数
        grad_2 = torch.autograd.grad(grad_1,x) #此处值x是确定的,开始给定了3
        
        # 展示一阶倒数的结果
        print(grad_1)
        #展示二阶导数结果
        print(grad_2)
        
        # 求取y=x的立方的一阶二阶三阶导数
        
        # 创建x的初值
        import torch
        
        # 创建x,并赋予初值
        x = torch.tensor([2],requires_grad = True)
        # 创建y
        y = torch.pow(x, 3)
        # 做一阶导数
        grad_1 = torch.autograd.grad(y, x, create_graph=True)
        # 做二阶导数
        grad_2 = torch.autograd.grad(grad_1[0], x, create_graph=True)
        # 做三阶导数
        grad_3 = torch.autograd.grad(grad_2[0], x, create_graph=False)
        
        print(grad_1)
        print(grad_2)
        print(grad_3)

相关文章:

  • 【数学建模】MATLAB快速入门
  • 每日一题——贪心算法
  • c++ 继承类的构造函数
  • Self-Attention流程的代码实现【python】
  • 使用AWS Lambda轻松开启Amazon Rekognition之旅
  • 【STM32单片机_(HAL库)】3-2-3【中断EXTI】【电动车报警器项目】433M无线收发模块实验
  • 使用Virtio Driver实现一个计算阶乘的小程序——QEMU平台
  • Python-数据爬取(爬虫)
  • Ceph篇之利用shell脚本实现批量创建bucket桶
  • 《区块链与监管合规:在创新与规范之间寻求平衡》
  • 单片机大小端模式
  • 100个练习学习Rust!可变性・循环・溢出
  • Nuxt3【项目配置】nuxt.config.ts
  • Spring Cloud全解析:配置中心之springCloudConfig配置存储
  • leetcode 41-50(2024.08.19)
  • 嵌入式软件--模电基础 DAY 2
  • 手撕C++入门基础
  • PyTorch分布式训练全攻略:DistributedDataParallel精解与实战
  • 数据结构——单链表
  • (计算机网络)网络层
  • 上海虹桥高铁站拦门事件反转,谁在带偏网友?
  • 中东睿评|胡塞武装已成为楔入中东各方力量之间的钉子户
  • 蓝佛安主持东盟与中日韩财长和央行行长系列会议并举行多场双边会见
  • 三百余英国王室藏品,一览爱德华时代的优雅
  • 德国巴斯夫:关税政策加剧全球市场不确定性,间接影响已显现
  • 因雷雨、沙尘等天气,这些机场航班运行可能受影响