You are rewrapping the loss into a new Variable in:
loss = Variable(loss, requires_grad = True)

and are thus breaking the computation graph.
Remove this line of code and all Variables as well, since they are deprecated since PyTorch 0.4.