PyTorch提供了自动求导(Automatic Differentiation)功能,允许您自动计算张量的梯度。这使得在神经网络训练中特别方便,因为您无需手动推导梯度表达式。
要在PyTorch中实现求梯度,需要执行以下几个步骤:
- 导入pytorch库
import torch
- 定义需要计算梯度的张量,并将其标记为需要梯度追踪的张量。可以通过设置requires_grad=True来实现:
x = torch.tensor([2.0], requires_grad=True)
这样在后续计算当中,pytorch会自动追踪与x相关的操作 以便后续计算梯度
- 计算梯度
得到目标张量,比如loss函数的值之后,可以通过下述代码求梯度
loss.backward()
4.获取梯度
此时,访问输入的grad属性即可
x.grad
对于不需要梯度参与的计算,如更新参数,需要加上with torch.no_grad():
每次计算梯度后,梯度值会保存在grad属性当中,如果需要再次计算,需要对grad进行清空操作x.grad.zero_()