我们可以使用自动微分来自动计算神经网络中的反向传播。 PyTorch中的autograd软件包完全提供了此功能。 使用autograd时,网络的前向传递将定义一个计算图; 图中的节点为张量tensor,边为从输入张量产生输出张量的函数。 然后通过该图进行**反向传播**,可以轻松计算梯度。
这听起来很复杂,在实践中非常简单。 每个张量代表计算图中的一个节点。 如果x是具有x.requires_grad = True的张量,则x.grad是另一个Tensor,它持有x相对于某个标量值的梯度。
有时可能希望防止PyTorch在requires_grad=True的张量执行某些操作时构建计算图;例如,在训练神经网络时,我们通常不希望通过权重更新步骤进行反向传播。在这种情况下,我们可以使用torch.no_grad()上下文管理器来防止构造计算图。