Table of Contents
Shortcuts

# torch.autograd.graph.Node.register_prehook

abstract Node.register_prehook(fn)

  Registers a backward pre-hook.

  The hook will be called every time a gradient with respect to the Node is computed. The hook should have the following signature:

      hook(grad_outputs: Tuple[Tensor]) -> Tuple[Tensor] or None

  The hook should not modify its argument, but it can optionally return a new gradient which will be used in place of `grad_outputs`.

  This function returns a handle with a method `handle.remove()` that removes the hook from the module.

  Note

  See Backward Hooks execution for more information on how when this hook is executed, and how its execution is ordered relative to other hooks.

  Example:

      >>> a = torch.tensor([0., 0., 0.], requires_grad=True)
      >>> b = a.clone()
      >>> assert isinstance(b.grad_fn, torch.autograd.graph.Node)
      >>> handle = b.grad_fn.register_prehook(lambda gI: (gI[0] * 2,))
      >>> b.sum().backward(retain_graph=True)
      >>> print(a.grad)
      tensor([2., 2., 2.])
      >>> handle.remove()
      >>> a.grad = None
      >>> b.sum().backward(retain_graph=True)
      >>> print(a.grad)
      tensor([1., 1., 1.])

  Return type:

    RemovableHandle

## Docs

Access comprehensive developer documentation for PyTorch

View Docs

## Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

## Resources

Find development resources and get your questions answered

View Resources

To analyze traffic and optimize your experience, we serve cookies on this site. By clicking or navigating, you agree to allow our usage of cookies. As the current maintainers of this site, Facebook’s Cookies Policy applies. Learn more, including about available controls: Cookies Policy.