Solved by colesbury in post #3 
              
              
                torch.tensor(original_tensor, requires_grad=True) will create a copy of the data as well as the tensor object. 
If you just want an alias that shares the same data but has requires_grad=True you can use: 
orig = torch.randn(3, 3)
x = orig.detach().requires_grad_()