The hook will be called every time the gradients for the module
      are computed. The hook should have the following signature:
     hook(module, grad_output) -> Tensor or None

  The "grad_output" is a tuple. The hook should not modify its
  arguments, but it can optionally return a new gradient with
  respect to the output that will be used in place of
  "grad_output" in subsequent computations. Entries in
  "grad_output" will be "None" for all non-Tensor arguments.

  For technical reasons, when this hook is applied to a Module,
  its forward function will receive a view of each Tensor passed
  to the Module. Similarly the caller will receive a view of each
  Tensor returned by the Module's forward function.

  Warning:

    Modifying inputs inplace is not allowed when using backward
    hooks and will raise an error.

  Parameters:
     * **hook** (*Callable*) -- The user-defined hook to be
       registered.
