Autograd自动求导
autograd是Pytorch的核心,可以用这个包来训练神经网络。torch.tensor是这个包的核心类,主要参数是requires_grad=,如果为True,代表追踪tensor的所有操作。当完成操作后,可以通过调用.backward来自动计算梯度。这里和莫烦老师的笔记有点不同,新的Pytorch版本里面,将Tensor和Variable进行了合并。
import torch
tensor = torch.tensor([[1., 3.], [1., 3.]], requires_grad=True)
# out = torch.mean(tensor.mul(tensor))
out = torch.mean(tensor * tensor)
print(out)
out.backward()
print(tensor.grad)
输出结果为:
tensor(5., grad_fn=<MeanBackward0>)
tensor([[0.5000, 1.5000],
[0.5000, 1.5000]])
这里有三点需要注意:
- 对于requires_grad必须要求tensor是float。如果是int,必须在后面加上dtype=torch.float。
- out必须是标量,之后才可以用backward。
- 利用.grad显示出关于tensor的梯度,相当于就是求一个二次函数的一阶导。