Yes, I tried using that. But it results in the following error:
input_x[1][1] = fc(input_x[1][1])
*** RuntimeError: in-place operations can be only used on variables that don't share storage with any other variables, but detected that there are 20 objects sharing it

In general, consider the following code:
(Pdb) feat = torch.autograd.Variable(torch.Tensor([[1, 2, 3], [4, 5, 6]]))
(Pdb) feat
Variable containing:
 1  2  3
 4  5  6
[torch.FloatTensor of size 2x3]

(Pdb) feat[0][0] = 9
*** RuntimeError: in-place operations can be only used on variables that don't share storage with any other variables, but detected that there are 2 objects sharing it


Any idea about how to get around it?
Also, are you sure that using .data always messes up autograd?