当前位置: 首页 > 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)

http://www.mrgr.cn/news/1294.html

相关文章:

  • RabbitMQ-消息队列-centos7
  • 【Redis】有序集合(Zset)详解及实际应用场景分析:从命令操作到内部编码
  • 封装的 JavaScript 函数,用于判断一个变量是否为空,适用于不同类型的变量:
  • 【Hot100】LeetCode—21. 合并两个有序链表
  • 这是啥设计模式-适配模式
  • 数据结构----栈
  • sql注入——sqlilabs27-36
  • centos7 支持百万长连接,需要调优哪些参数?
  • laravel使用SSH 隧道连接远程数据库
  • FastAPI个人入门学习
  • 【原创公式】【完全二叉树】叶结点的计算【数据结构】
  • ESP32CAM人工智能教学19
  • SPI驱动学习一(协议原理)
  • 《黑神话:悟空》媒体评分解禁 M站均分82
  • 计算机网络速成(二)
  • 合宙LuatOS AIR700 IPV6 TCP 客户端向NodeRed发送数据
  • Aerospike学习笔记
  • 白骑士的C#教学附加篇 5.1 C#开发工具
  • QT网络编程: 实现UDP通讯设置
  • 大数据ETL工具(Sqoop, DataX, Kettle)对比