GAN - Serbipunk/notes GitHub Wiki

DCGAN

pytorch

https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html

        # (1) Update D network: maximize log(D(x)) + log(1 - D(G(z)))

        # (2) Update G network: maximize log(D(G(z)))

lightning

https://lightning.ai/docs/pytorch/stable/model/manual_optimization.html#use-multiple-optimizers-like-gans

g_opt, d_opt = self.optimizers()

d_x = self.D(X)
errD_real = self.criterion(d_x, real_label)

d_z = self.D(g_X.detach())
errD_fake = self.criterion(d_z, fake_label)

errD = errD_real + errD_fake

d_opt.zero_grad()
self.manual_backward(errD)
d_opt.step()


d_z = self.D(g_X)
errG = self.criterion(d_z, real_label)

g_opt.zero_grad()
self.manual_backward(errG)
g_opt.step()