In CycleGAN are there two different generators and two different discriminators? I am trying to assimilate the contents of this paper. I have a confusion about how many different networks are there in the architecture of CycleGAN. To my understanding, the concept of cycle means that there is only one generator and one discriminator which changes roles (Discriminator as generator; and Generator as Discriminator) depending on what loss we want to calculate (whether Y -> X or X -> Y). However, my friend I have a confusion and we have been debating about this without a consensus. He says that there are totally four different networks. Two generators G1 and G2; and two discriminators D1 and D2. What is the truth ?
There are two generators and two discriminators.

Check out the code here