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()