pytorch基础(四)-----------autograd自动求导

autograd自动求导

1、torch.autograd.backward(tensors, grad_tensors=None, retain_graph=None, create_graph=False)
功能:自动求取梯度
参数:
tensors:用于求导的张量,如loss
retain_graph:保存计算图(注意:当我们要进行二次梯度回传时,要将此处设置为True)
create_graph:创建导数计算图,用于高阶求导
grad_tensors:多梯度权重
y = ( x + w ) ∗ ( w + 1 ) y=(x+w)*(w+1) y=(x+w)(w+1)为例,代码展示为:

import torch

# 先创建计算图,在使用autograd自动求导
# autograd自动求导

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)

# 在这里直接使用tensor.backward的原因是在backward方法中会自动调用tensor.autograd.backward方法
y.backward()
print(w.grad)   # [5, ]

2、torch.autograd.grad(outputs, inputs, grad_tensors=None, retain_graph=None, create_graph=False)
功能:求取梯度
参数:
outputs:用于求导的张量,如loss
inputs:需要梯度的张量
retain_graph:保存计算图
create_graph:创建导数计算图,用于高阶求导(注意当我们要进行二阶求导时,需要将此项设置为True,创建出导数的计算图)
grad_tensors:多梯度权重
3、tensor.grad.zero_()
zero后面的 ‘_‘ 代表原地操作,不开辟新的内存空间
功能:梯度清零
注意:每次计算梯度不会自动清除,会进行叠加,所以需要在每次计算梯度后进行手动清零

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值