Pytorch学习之旅(3)——autograd自动求导系统

一、torch.autograd.backward()函数

      功能:根据计算图自动求取梯度。

torch.autograd.backward(tensors,      => 用于求解梯度的张量
                        gradient,     => 多梯度权重
                        retain_graph, => 保存计算图
                        create_graph) => 创建导数计算图,用于高阶求导

二、torch.autograd.grad()函数

      功能:手动选取梯度

torch.autograd.grad(outputs,      => 用于求导的张量,如loss
                    inputs,       => 需要梯度的张量
                    create_graph, => 创建倒数计算图,用于高阶求导
                    retain_graph, => 保存计算图
                    grad_outputs) => 多维度权重

应用举例:

import torch

x = torch.tensor([1.], requires_grad=True)
y = torch.pow(x, 2)

dy_dx = torch.autograd.grad(y, x, create_graph=True)
print("一阶导数dy/dx  = ", dy_dx)   

dy_dx2 = torch.autograd.grad(dy_dx[0], x)
print("二阶导数dy/dx2 = ",dy_dx2)

输出结果:

一阶导数dy/dx  =  (tensor([2.], grad_fn=<MulBackward0>),) # 元组tuple
二阶导数dy/dx2 =  (tensor([2.]),)

你可能感兴趣的:(Pytorch学习之旅,pytorch,机器学习)