本文重点
深度学习框架pytorch拥有自动求导的机制,自动求导是 PyTorch 中非常重要的特性,能够让我们避免手动去计算非常复杂的导数,这能够极大地减少了我们构建模型的时间。本文学习的是第10步反向传播,学习路线参考前面一篇文章。
pytorch0.4版本
在pytorch的0.4版本中拥有Variable,它具有自动求微分的功能,我们可以使用它来构建变量,然后自动求微分。
对标量求偏导数
import torch
from torch.autograd import Variable
x=Variable(torch.Tensor([2]),requires_grad=True)
y=x+2
z=y**2+3
print(z)
z.backward()#计算z对每一个参数的梯度
print(x.grad)
变量x在申明的时候,指定了requires_grad=True,这样和x进行运算的所有变量都相当于设置了requires_grad=True,比如y、z都相当于设置了requires_grad=True。这样我们就可以使用反向传播了,本例中z.backward()就是表示的执行反向传播,最后x.grad表示的是z对x的偏导数。
对矩阵求梯度
import torch
from torch.autograd import Variable
x=Variable(torch.rand