backward raises an error. If you'd like to support double backward,
   you can either recompute intermediaries based on the inputs during
   backward or return the intermediaries as the outputs of the custom
   Function. See the double backward tutorial for more details.
In "backward()", saved tensors can be accessed through the
   "saved_tensors" attribute. Before returning them to the user, a
   check is made to ensure they weren't used in any in-place operation
   that modified their content.
Arguments can also be "None". This is a no-op.
See Extending torch.autograd for more details on how to use this
   method.
Example::
      >>> class Func(Function):
      >>>     @staticmethod
      >>>     def forward(ctx, x: torch.Tensor, y: torch.Tensor, z: int):
      >>>         w = x * z
      >>>         out = x * y + y * z + w * y
      >>>         ctx.save_for_backward(x, y, w, out)
      >>>         ctx.z = z  # z is not a tensor
      >>>         return out
      >>>