Hello,

I have a question regarding training a model’s parameters when the forward function include a gradient wrt to the input. Instead of showing all the code (where I have trouble with the backward-function), I can boil it down to this small (and silly) example (and when I can solve this problem I think it will translate to my code):

import torch as th

import torch.nn as nn

import torch.nn.functional as F

class Model(nn.Module):

```
def __init__(self):
super().__init__()
self.l1 = nn.Linear(5, 2)
def forward(self, x):
x_ = self.l1(x)
x_ = (x_ ** 2).sum(1)
return th.autograd.grad(x_, x, grad_outputs=th.ones_like(x_))[0]
```

m = Model()

m.train()

x = th.randn(10, 5).requires_grad_(True)

y = m(x)

loss = F.mse_loss(y, x)

params = m.parameters()

for p in params:

print(th.autograd.grad(loss, p, retain_graph=True)[0])

Here I cannot compute the gradient in the for-loop. How can I solve this?

Thanks in advance!!