欢迎光临散文网 会员登陆 & 注册

07 自动求导【动手学深度学习v2】

2023-02-13 00:09 作者:momonaの男友  | 我要投稿
  • 计算梯度y.backward(),是对结果y=f(x),计算梯度dy/dx,而得到结果将存储在x.grad内


梯度计算方法:


自动求导实现 P2 - 01:19


对于 y = 2*torch.dot(x, x),不妨令x∈Rn,则

y = 2 Σ(i:1→n)xi²,那么y对于xi的梯度,很显然对于各部分求偏导,例如dy/dx1 = 2*2x1

那么同样的道理,


自动求导实现 P2 - 02:45


y = x.sum(),可以等效为y=Σxi,那么自然而然的,dy/dxi = 1.

我是这么理解的。


自动求导实现 P2 - 03:40


y=x*x,这个的结果并非是和上面的torch.dot一致的,因为这个的结果是一个向量函数,也即y = [x1²,x2², ..., xn²],所以在这沐神说这是无意义的。但是由于下面

y.sum()的存在,导致了y又变成了

y = Σ(i:1→n)xi²,所以也就和梯度1那时候一样了。


自动求导实现 P2 - 04:44


z=u*x,同理啊,由于u此时全为常数,原式即为y=Σkixi,对应的梯度自然为[k1, k2,..., kn],也即u

07 自动求导【动手学深度学习v2】的评论 (共 条)

分享到微博请遵守国家法律