grad¶
反向模式自动微分。
警告
该 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()