feribg
#1
I currently have a model that outputs a single regression target with mse loss. I can get the derivatives with respect to the inputs like so

```
x = x.requires_grad_(True).cuda()
output = model.eval()(None, x)
output[0].backward()
x.grad[0]
```

However this works one element at a time, if x is a batch, then

```
x = x.requires_grad_(True).cuda()
output = model.eval()(None, x)
output.backward()
x.grad[0]
```

fails with a runtime error that implicit derivatives are only supported for scalar outputs. I have 2 questions:

- How to get a batch of target + itâ€™s derivatives wrt to inputs?
- How to get higher order derivates wrt to inputs?

Important to note that if I aggregate the loss then that works, but I need the specific input <> loss pair derivatives not the averaged one.

feribg
#2
Here seems to be an example of that in tensorflow, what would the Pytorch equiv be ?

```
def fwd_gradient(func, x, input_gradients=None, use_gradient_tape=False):
```