当前位置: 首页 > 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.lryc.cn/news/428324.html

相关文章:

  • TCP协议为什么是三次握手和四次挥手
  • 利用ChatGPT提升学术论文撰写效率:从文献搜集到综述撰写的全面指南
  • 智能、高效、安全,企业桌面软件管理系统,赋能企业数字化转型!提升工作效率不是梦!
  • 第N7周:调用Gensim库训练Word2Vec模型
  • 基于Crontab调度,实现Linux下的定时任务执行。
  • Centos系统中创建定时器完成定时任务
  • WLAN基础知识(1)
  • 网络安全实训第三天(文件上传、SQL注入漏洞)
  • Nginx 学习之 配置支持 IPV6 地址
  • springboot+伊犁地区游客小助手-小程序—计算机毕业设计源码无偿分享需要私信20888
  • 提升工作效率的五大神器
  • 想投资现货黄金?在TMGM开户需要多少钱?
  • “零拷贝”
  • [ABC367C] Enumerate Sequences 题解
  • C语言 | Leetcode C语言题解之第336题回文对
  • 【SQL】仅出现一次的最大数据
  • MySQL 数据类型详解及SQL语言分类-DDL篇
  • Leet Code 128-最长连续序列【Java】【哈希法】
  • 网络协议(概念版)
  • Pulsar官方文档学习笔记——消息机制
  • PyTorch--残差网络(ResNet)在CIFAR-10数据集进行图像分类
  • ETAS工具链自动化实战指南<一>
  • 疫情期间我面试了13家企业软件测试岗位,一些面试题整理
  • PINCE——Linux 原生游戏内存修改器,一款替代 Cheat Engine 的强大游戏修改器,Linux 游戏玩家必备神器!
  • 为IntelliJ IDEA安装插件
  • ES6 Promise
  • html+css 实现hover 凹陷按钮
  • 什么是负载均衡?负载均衡器如何运作?
  • (Arxiv-2023)潜在一致性模型:通过少步推理合成高分辨率图像
  • Unity与UE,哪种游戏引擎适合你?