torch.autograd.forward_ad.make_dual(tensor, tangent, *, level=None)[source]

Associates a tensor value with a forward gradient, the tangent, to create a “dual tensor”, which is used to compute forward AD gradients. The result is a new tensor aliased to tensor with tangent embedded as an attribute as-is if it has the same storage layout or copied otherwise. The tangent attribute can be recovered with unpack_dual().

This function is backward differentiable.

Given a function f whose jacobian is J, it allows one to compute the Jacobian-vector product (jvp) between J and a given vector v as follows.


>>> with dual_level():
...   inp = make_dual(x, v)
...   out = f(inp)
...   y, jvp = unpack_dual(out)

Please see the forward-mode AD tutorial for detailed steps on how to use this API.


Access comprehensive developer documentation for PyTorch

View Docs


Get in-depth tutorials for beginners and advanced developers

View Tutorials


Find development resources and get your questions answered

View Resources