当前位置: 首页> 文旅> 旅游 > pytorch自动微分

pytorch自动微分

时间:2025/7/9 15:45:56来源:https://blog.csdn.net/qq_58739767/article/details/141327461 浏览次数:0次
  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)
关键字:pytorch自动微分

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: