```
x = torch.ones(1)
x = Variable(x,requires_grad=True)
y = x*x
y.backward()
torch.autograd.grad(x.grad,x)
```

Why does this method of computing hessian not work?

```
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
```

```
x = torch.ones(1)
x = Variable(x,requires_grad=True)
y = x*x
y.backward()
torch.autograd.grad(x.grad,x)
```

Why does this method of computing hessian not work?

```
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
```

Hi Mayank,

That code will not work as the error message clearly says.

As I understand it, you want to calculate the double derivative of a function `y`

wrt the input `x`

. Here’s how it could be done:

```
import torch
x = torch.ones(1, requires_grad=True)
y = x * x
first_grad = torch.autograd.grad(y, x, create_graph=True)[0] # first derivative. also note the use of create_graph=True is to ensure that the graph of the first derivative is constructed which is required compute higher order derivatives
second_grad = torch.autograd.grad(grad_y, x)[0] # this is what you need
```