Generative Adversarial Networks (GANs) are implicit generative models that allow for inference without direct likelihood calculation consisting of two parts. The generator, a function G θ : R k → R d takes a random latent vector z ∈ R k drawn from some tractable prior p(z) and transforms it into a sample G θ (z). The discriminator, a binary classifier D ϕ : R d → R, takes both samples generated by the generator G θ (z) and real training samples x ∈ D and attempts to distinguish the true samples from the fake ones.