def METHOD_NAME(self):
    self.forward()                   # compute fake images: G(A)
    # update D
    self.set_requires_grad(self.netD, True)  # enable backprop for D
    self.optimizer_D.zero_grad()     # set D's gradients to zero
    self.backward_D()                # calculate gradients for D
    self.optimizer_D.step()          # update D's weights
    # update G
    self.set_requires_grad(self.netD, False)  # D requires no gradients when optimizing G
    self.optimizer_G.zero_grad()        # set G's gradients to zero
    self.backward_G()                   # calculate graidents for G
    self.optimizer_G.step()             # udpate G's weights