Hi I am calculating a Jacobian of a function of a Jacobian. I have a vector valued function f and matrix valued fucntion g. Both differentiable.

```
y = f(x)
nabla = jacobian(y,x)
function_nabla = g(nabla)
hessian = jacobian(function_nabla, x)
```

`nabla`

is calculated without problem so is `g(nabla).`

Function `g`

is standard pytorch function such as inverse.

I am using the following function for jacobian.

```
def jacobian(y, x, create_graph=True):
jac = []
flat_y = y.reshape(-1)
flat_y.retain_grad()
grad_y = torch.zeros_like(flat_y)
for i in range(len(flat_y)):
grad_y[i] = 1.
grad_x, = torch.autograd.grad(flat_y, x, grad_y, retain_graph=True, create_graph=create_graph)
jac.append(grad_x.reshape(x.shape))
grad_y[i] = 0.
return torch.stack(jac).reshape(y.shape + x.shape)
```

I always get

RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.FloatTensor [1, 32]] is at version 64; expected version 63 instead.

I can’t pinpoint which operation is inplace here. Thank you.