torch.Tensor.backward¶
- Tensor.backward(gradient=None, retain_graph=None, create_graph=False, inputs=None)[源代码]¶
计算当前张量相对于图叶的梯度。
该图使用链式法则进行微分。如果张量不是标量(即其数据包含多个元素)且需要梯度,则该函数还需要指定
gradient。它应是一个类型和位置匹配的张量,包含相对于self的微分函数的梯度。此函数在叶子节点中累积梯度 - 您可能需要在调用它之前将
.grad属性归零或将其设置为None。 有关累积梯度的内存布局的详细信息,请参阅 默认梯度布局。注意
如果你在用户指定的CUDA流上下文中运行任何前向操作,创建
梯度,和/或调用反向传播,请参阅 反向传播的流语义。注意
当提供了
inputs并且给定的输入不是叶子节点时, 当前的实现将调用其grad_fn(尽管严格来说不需要这样做来获取这些梯度)。 这是一个实现细节,用户不应依赖于此。 有关更多详细信息,请参见https://github.com/pytorch/pytorch/pull/60521#issuecomment-867061780。- Parameters
梯度 (张量 或 无) – 相对于张量的梯度。如果它是一个张量,它将被自动转换为一个不需要梯度的张量,除非
create_graph为真。对于标量张量或不需要梯度的张量,可以指定无值。如果无值可以接受,则此参数是可选的。retain_graph (bool, 可选) – 如果
False,用于计算梯度的图将被释放。请注意,在几乎所有情况下,将此选项设置为True是不必要的,通常可以通过更有效的方式解决。默认为create_graph的值。create_graph (bool, 可选) – 如果
True,将构建导数的图,允许计算高阶导数乘积。默认为False。输入(序列的张量)—— 相对于这些输入的梯度将被累积到
.grad中。所有其他张量将被忽略。如果没有提供,梯度将被累积到所有用于计算 attr::tensors 的叶子张量中。