快捷键

torch.Tensor.backward

Tensor.backward(gradient=None, retain_graph=None, create_graph=False, inputs=None)[source][source]

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

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

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

注意

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

注意

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

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

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

  • create_graph (bool, 可选) – 如果 True ,将构建导数的图,允许计算高阶导数乘积。默认值为 False

  • 输入(序列中的张量,可选)- 与之相关的梯度将累积到 .grad 。所有其他张量将被忽略。如果没有提供,则梯度将累积到用于计算 tensors 的所有叶张量中。


© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源