torch.Tensor.backward
- Tensor.backward(gradient=None, retain_graph=None, create_graph=False, inputs=None)[源代码]
-
计算当前张量相对于图中叶子节点的梯度。
使用链式法则对图进行求导。如果张量是非标量(即其数据包含多个元素)并且需要计算梯度,则该函数还需要指定一个
gradient
参数。这个参数应该是一个与原张量类型和形状相匹配的张量,表示相对于self
的求导结果的梯度。此函数会在叶子节点中累积梯度 - 在调用之前,你需要将
.grad
属性设置为零或None
。有关累积梯度的内存布局详情,请参见默认梯度布局。注意
如果你在用户指定的CUDA流上下文中执行任何前向操作、创建
gradient
,或调用backward
,请参阅反向传递的流语义。注意
当提供
inputs
且给定输入不是叶子节点时,当前实现会调用其grad_fn(实际上不需要这样做来获取梯度)。这是用户不应依赖的内部实现细节。更多详情请参见https://github.com/pytorch/pytorch/pull/60521#issuecomment-867061780。- 参数
-
-
gradient (Tensor, optional) – 被微分函数相对于
self
的梯度。如果self
是标量,则此参数可以省略。 -
retain_graph (bool, optional) – 如果为
False
,用于计算梯度的图将被释放。注意,在绝大多数情况下设置此选项为 True 是不必要的,并且通常可以使用更有效的方法来解决该问题。默认值与create_graph
的值相同。 -
create_graph (bool, 可选) – 如果设置为
True
,将构建导数的图,从而可以计算更高阶的导数乘积。默认值为False
。 -
inputs (张量序列, 可选) – 相对于这些输入,将梯度累加到
.grad
中。所有其他张量将被忽略。如果没有提供,则梯度会累积到所有用于计算tensors
的叶子张量中。
-