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)
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值