Thanks a lot for you answer. So if I understand correctly a Variable needs to have a creator which is None to be considered a leaf, and only in that case the gradient will be accumulated in it.
So then if I want to initialize a new Variable using values from another (effectively making a copy) I would go for  xx = Variable(x.data, requires_grad=True), or is there a different option?