transforms, they can detach all of the parameters for better
     performance and memory usageExample:
    >>> detached_params = {k: v.detach() for k, v in model.named_parameters()}
    >>> grad_weights = grad(compute_loss)(detached_params, x, t)
    >>> grad_weights.grad_fn  # None--it's not tracking gradients outside of grad

 This means that the user cannot call "grad_weight.backward()".
 However, if they don't need autograd tracking outside of the
 transforms, this will result in less memory usage and faster
 speeds.

Parameters:
      * module (torch.nn.Module) -- the module to call
  * **parameters_and_buffers** (*Dict**[**str**,**Tensor**] or
    **tuple of Dict**[**str**, **Tensor**]*) -- the parameters
    that will be used in the module call. If given a tuple of
    dictionaries, they must have distinct keys so that all
    dictionaries can be used together

  * **args** (*Any** or **tuple*) -- arguments to be passed to the
