线代: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