forward_grad

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

前向模式自动微分。

警告

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

注解

仅支持静态图模式

参数

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

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

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

返回

  • grad_outputs (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')
    y = x * x
    y_grad = paddle.incubate.autograd.forward_grad(y, x)
    paddle.incubate.autograd.prim2orig()

exe = paddle.static.Executor()
exe.run(startup_program)
y_grad = exe.run(main_program, feed={'x': np.array([2.]).astype('float32')}, fetch_list=[y_grad])
print(y_grad)
# [array([4.], dtype=float32)]

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