详解pytorch中的自动求导Autograd,彻底理解gradient参数

自动求导Autograd

1,标量与标量之间的求导

函数y = x^2,当x=3.0时,y的导数,,

**注意:在机器学习中一般x的导数是多少,如x.grad(), 指的是函数在变量x处的导数。pytorch求导是函数对自变量的求导,并不计算函数对中间变量的导数,****如y是x的函数,z是y的函数,f是z的函数,那么在求导的时候,会使用 f.backwrad()只会默认求f对于叶子变量x的导数值,而对于中间变量y、z的导数值是不知道的,直接通过x.grad是知道的、y.grad、z.grad的值为none。pytorch实质上求解雅可比(Jacobian)式. 因为雅可比式可以根据已知条件(即明确的函数关系)求出,再乘以上一级梯度值。根据BP算法的推导(链式法则),dloss / dx = (dloss / doutput) * (doutput / dx),如下,dloss/doutput就是1.0, doutput / dx为6.0,再相乘。

x = torch.tensor(3.0, requires_grad=True)
y = torch.pow(x, 2)
# 判断x,y是否是可以求导的
print(x.requires_grad)
print(y.requires_grad)
# 求导,通过backward函数来实现
y.backward()
# 查看导数,也即所谓的梯度
print(x.grad)
"""
结果:
True
True
tensor(6.)  # 使用数学求导法则同样计算是6
"""

2,标量对向量/矩阵求导

函数f=(X), 标量y对列向量x求导,即求函数在向量各处分量xi的导数.
在这里插入图片描述

# 创建一个多元函数,即Y=XW+b=Y=x1*w1+x2*w2*x3*w3+b,x不可求导,W,b设置可求导
X = torch.tensor([1.5, 2.5, 3.5], requires_grad=False)  # 常量
W = torch.tensor([0.2, 0.4, 0.6], requires_grad
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值