Hi Tom,
I hope you are well. Sorry in this lines when we update the discriminator which cost is used for updating ?
errD_penalty = errD_fake - errD_real + grad_penalty
errD = errD_fake - errD_real
optimizerD.step()

or here
D_cost = D_fake - D_real + gradient_penalty
 Wasserstein_D = D_real - D_fake
optimizerD.step()
```