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