MoFlowGAN consists of 3 components: a normalizing flow generator G θ that learns to generate molecular graphs, a discriminator D ϕ that learns to distinguish real and fake molecular graphs, and a reward network R ψ that learns to score molecular graphs. As alluded to earlier we represent molecules as bond tensor, b, and atom matrix, a, pairs, (a, b). We adopt MolGAN's reward network to heuristically bias generation towards high performing molecules, while avoiding the mode collapse issues commonly seen with GANs by using a compound normalizing flow for the generator allowing us to train MoFlowGAN on three objectives: negative log likelihood, adversarial loss, and reward optimization.