If strategy is "forward-mode", the dtype will be that of the
      output; otherwise, the input.
Return type:
      Jacobian (Tensor or nested tuple of Tensors)
-[ Example ]-



def exp_reducer(x):
   ...     return x.exp().sum(dim=1)
inputs = torch.rand(2, 2)
jacobian(exp_reducer, inputs)
   tensor([[[1.4917, 2.4352],
            [0.0000, 0.0000]],
           [[0.0000, 0.0000],
            [2.4369, 2.3799]]])
jacobian(exp_reducer, inputs, create_graph=True)
   tensor([[[1.4917, 2.4352],
            [0.0000, 0.0000]],
           [[0.0000, 0.0000],
            [2.4369, 2.3799]]], grad_fn=)
def exp_adder(x, y):
   ...     return 2 * x.exp() + 3 * y
inputs = (torch.rand(2), torch.rand(2))
jacobian(exp_adder, inputs)
   (tensor([[2.8052, 0.0000],
           [0.0000, 3.3963]]),
    tensor([[3., 0.],
            [0., 3.]]))


