线代微分的一些注意点

本文介绍了PyTorch中处理矩阵的函数,如A.sum(axis=1)和reshape,以及torch.dot用于计算点积和矩阵乘法。还讨论了torch.norm()用于计算L2范数和L1范数。在自动求导部分,强调了使用x.requires_grad_(True)使张量可导,以及如何通过.backward()进行单变量微分,并管理梯度值。此外,还解释了如何处理多变量情况下的偏导数。
摘要由CSDN通过智能技术生成

线代:1.A是一个(5,4)的矩阵,现在A.sum(axis=1),得到的是(5,)的向量,要reshape(5,1),或者直接使用keepdims = True

2.torch.dot(点积)-数/mv(向量矩阵的积)/mm(矩阵和矩阵积)(*是对应相乘)

3.torch.norm()(l2)/abs().sum()(l1)

微分:自动求导:

1,求导前需要使用x.requires_grad_(True)使得张量可导

2,x.grad是储存函数对于变量x的梯度的地方

3,注意:张量要是float才能求导,所以习惯比如:torch.tensor([1.0,2,3]),这样就是float了

4,对以x为变量的函数用.backward可以求导(要求:该函数为标量,不是则要先sum(),之后再求)

5,x.grad.zero_()归零,否则累积

6,y,x都是变量,应为.backward()不能识别要求那个变量,所以只能单变量微分。如果要求z对x的偏导数,需要使用.detach(),使u具有和y除了求导外相同功能同时不会取代y,所以需要y对于x的偏导数仍旧可以用y求

x.grad.zero_()
y = x * x
u = y.detach()
z = u * x

z.sum().backward()
x.grad == u
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值