> Why I have to set to real these fake images and what fake images are these? You set them to "real" label for the discriminator when training the generator, because that is the goal of the generator, to produce an output of 1 (probability of being a real image) when tested. Usually you will generate a new batch of generated images for this step in training. You just used the last generated mini-batch to train the discriminator, so you expect them to score worse. Sending the exact same images again will cause correlation between the two minibatches that you want to avoid. It would not be a disaster, but training GANs can be quite difficult and sensitive to details like this, so it is better to keep generating new images and not re-use the previous ones. > The one generated in the first round from the generator itself? No. New images generated just for training the generator. > Or only the one classified as faked by the discriminator? (then they could be both real images classified wrongly or fake images classified in the right way). No. New images generated just for training the generator. Out of interest though, if the discriminator classifies a fake image as 100% real (with a probability close to 1), then the generator will not learn anything from that. The gradients would all be zero. > Finally what the generator does to these faked images? Nothing is done to the images themselves - unless perhaps you are keeping some copies to render and monitor training progress etc. The images occur within the combined generator/discriminator network, effectively as a hidden layer. The images are represented as artificial neuron output, so they are _involved_ in backpropagation calculations for that layer (with no difference to any other hidden layer in a CNN), but are not changed directly. The generator uses the gradients calculated from the combined discriminator/generator network to update its weights using gradient descent. Importantly in this phase of the updates, the discriminator weights are not changed. In terms of training the generator/discriminator combined network to update the generator: * The input to the combined network is some new random input vectors (typically a vector with independent truncated normal distribution for each element). * The "ground truth" label is 1 for every item. * The discriminator parameters must be "frozen", somehow excluded from being updated. * Run the minibatch forward to get loss and backpropagate to get gradients for the whole network including the generator. * Apply a gradient step (usually via some optimiser, such as Adam).