快捷方式

torch.Tensor.backward

Tensor.backward(gradient=None, retain_graph=None, create_graph=False, inputs=None)[源代码][源代码]

计算当前张量相对于计算图叶节点的梯度。

使用链式法则计算图的微分。如果张量是非标量(即其数据包含多个元素)且需要梯度,则函数还需要额外指定一个 gradient。它应该是一个与 self 类型和形状匹配的张量,表示被微分函数相对于 self 的梯度。

此函数在叶节点处累积梯度——您可能需要在调用此函数之前将 .grad 属性归零或设置为 None。有关累积梯度内存布局的详细信息,请参阅 默认梯度布局

注意

如果在用户指定的 CUDA 流上下文中运行任何前向操作、创建 gradient 和/或调用 backward,请参阅 反向传播的流语义

注意

当提供了 inputs 并且给定输入不是叶节点时,当前实现将调用其 grad_fn(尽管严格来说获取这些梯度并不需要这样做)。这是一个实现细节,用户不应该依赖它。更多详细信息,请参阅 https://github.com/pytorch/pytorch/pull/60521#issuecomment-867061780

参数
  • gradient (Tensor可选) – 被微分函数相对于 self 的梯度。如果 self 是标量,则可以省略此参数。

  • retain_graph (bool可选) – 如果为 False,则用于计算梯度的计算图将被释放。请注意,在几乎所有情况下,将此选项设置为 True 都是不必要的,并且通常可以通过更有效的方式解决。默认为 create_graph 的值。

  • create_graph (bool可选) – 如果为 True,则将构建导数的计算图,从而可以计算更高阶导数。默认为 False

  • inputs (Tensor 序列,可选) – 相对于其累积梯度到 .grad 的输入。所有其他张量将被忽略。如果未提供,则梯度将累积到用于计算 tensors 的所有叶节点张量中。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题解答

查看资源