A team is training a GAN on photographs of faces. Their discriminator is in good health: it separates real photographs from the generator's output easily, and it keeps improving as the run goes on.
Their generator update runs like this, once per step, with the discriminator's weights held still:
One detail of how step 2 is implemented: the fake images are copied into fresh arrays before they are handed over. The discriminator's verdict is therefore computed on a copy, and what comes back is a plain number — there is no path leading from it back through the discriminator's layers to the pixels, and so none to the generator's weights either.
Nothing crashes. The generator's loss is computed and plotted every step, it moves around from step to step as the discriminator keeps changing, and over an epoch it oscillates the way a GAN loss curve is supposed to.
The run is left going for 400 epochs. What do the generator's samples look like at the end, and why?
Select all that apply.