Could you try changing loss_G_Final.backward() to loss_G_Final.backward(retain_graph=True)?
Also, I don’t think you should be changing the device of your loss before calling backward()? If you initialize your optimizer with your model on the CPU and then move it to the GPU, there might be a potential device error. With your parameters being on one device and the gradients another.