grad

paddle.incubate.autograd. grad ( outputs, inputs, grad_outputs=None ) [源代码]

反向模式自动微分。

警告

该 API 目前为 Beta 版本,函数签名在未来版本可能发生变化。

注解

仅支持静态图模式

参数

  • outputs (Tensor|Sequence[Tensor]) - 输出 Tensor 或 Tensor 序列。

  • inputs (Tensor|Sequence[Tensor]) - 输入 Tensor 或 Tensor 序列。

  • grad_outputs (Tensor|Sequence[Tensor], 可选) - 输出的初始梯度,形状与输出相同。默认值为 None,表示形状与输出相同,值全为 1 的 Tensor 或 Tensor 列表

返回

  • grad_inputs (Tensor|tuple[Tensor]) - 输入梯度。

代码示例

>>> import numpy as np
>>> import paddle

>>> paddle.enable_static()
>>> paddle.incubate.autograd.enable_prim()

>>> startup_program = paddle.static.Program()
>>> main_program = paddle.static.Program()
>>> with paddle.static.program_guard(main_program, startup_program):
...     x = paddle.static.data('x', shape=[1], dtype='float32')
...     x.stop_gradients = False
...     y = x * x
...     x_grad = paddle.incubate.autograd.grad(y, x)
...     paddle.incubate.autograd.prim2orig()
...
>>> exe = paddle.static.Executor()
>>> exe.run(startup_program)
>>> x_grad = exe.run(main_program, feed={'x': np.array([2.]).astype('float32')}, fetch_list=[x_grad])
>>> print(x_grad)
[array([4.], dtype=float32)]

>>> paddle.incubate.autograd.disable_prim()
>>> paddle.disable_static()