Hi,

For testing, I wrote a extremely simple loss function that sums all output value to be the loss, here is the code (input is 1x1x10x10 tensor for simple test):

```
class SomeLoss(Function):
def forward(self, input):
total_loss = torch.DoubleTensor(1)
total_loss[0] = torch.sum(input)
self.save_for_backward(input)
return total_loss
def backward(self,grad_output):
input, = self.saved_tensors
grad_input = torch.DoubleTensor(input.size())
grad_input = grad_input.zero_() + 1
return grad_input
```

However, when I used `torch.autograd.gradcheck`

function, it always return `False`

:

```
my_creterion = SomeLoss()
valid = torch.autograd.gradcheck(my_creterion, (input,)) # valid is always false
```

Then I dig into `gradcheck`

code and I found that in function `get_analytical_jacobian`

, after doing `output.backward(grad_output)`

, `input.grad`

is always `None`

instead of a `Tensor`

of all 1, which set Jacobian to be zero afterwards. Does anyone know what’s wrong with my code?