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

- 计算梯度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