The generator creates fake data that looks like real data to fool the discriminator.
Click to reveal answer
beginner
What does the discriminator do in a GAN?
The discriminator tries to tell apart real data from fake data produced by the generator.
Click to reveal answer
intermediate
Why do the generator and discriminator compete in GAN training?
They compete so the generator improves at making realistic data, and the discriminator improves at spotting fakes.
Click to reveal answer
intermediate
In PyTorch, what is a simple way to define a generator model?
Use torch.nn.Module to build layers that take random noise as input and output fake data.
Click to reveal answer
intermediate
What loss function is commonly used for the discriminator in GANs?
Binary cross-entropy loss is used to measure how well the discriminator classifies real vs fake data.
Click to reveal answer
What input does the generator in a GAN usually take?
AReal images
BDiscriminator output
CLabels
DRandom noise vector
✗ Incorrect
The generator starts from random noise to create new fake data.
What is the main goal of the discriminator?
AOptimize generator weights
BGenerate fake data
CClassify data as real or fake
DCreate noise vectors
✗ Incorrect
The discriminator learns to tell real data from fake data.
Which loss function is typically used to train the discriminator?
ABinary cross-entropy
BCategorical cross-entropy
CMean squared error
DHinge loss
✗ Incorrect
Binary cross-entropy measures how well the discriminator classifies real vs fake.
During GAN training, what happens when the discriminator gets better?
AGenerator stops learning
BGenerator performance improves
CTraining ends
DDiscriminator generates data
✗ Incorrect
A stronger discriminator pushes the generator to create more realistic data.
Which PyTorch class is used to create generator and discriminator models?
Atorch.nn.Module
Btorch.utils.data.Dataset
Ctorch.optim.Optimizer
Dtorch.Tensor
✗ Incorrect
torch.nn.Module is the base class for all neural network models in PyTorch.
Explain how the generator and discriminator work together in a GAN.
Think of a game where one tries to fool and the other tries to detect.
You got /4 concepts.
Describe how you would implement a simple generator model in PyTorch.
Start from random noise and build a small neural network.
You got /4 concepts.
Practice
(1/5)
1. What is the main role of the generator in a GAN (Generative Adversarial Network)?
easy
A. To classify data as real or fake
B. To optimize the loss function of the discriminator
C. To create fake data from random noise
D. To preprocess the input data
Solution
Step 1: Understand the generator's purpose
The generator's job is to produce new data that looks like the real data by starting from random noise.
Step 2: Differentiate from discriminator's role
The discriminator's role is to tell real data from fake, not to create data.
Final Answer:
To create fake data from random noise -> Option C
Quick Check:
Generator creates fake data = B [OK]
Hint: Generator makes fake data; discriminator checks it [OK]
Common Mistakes:
Confusing generator with discriminator
Thinking generator classifies data
Assuming generator preprocesses data
2. Which of the following is the correct way to define a simple discriminator model in PyTorch?
easy
A. class Discriminator(nn.Module):
def __init__(self):
self.fc = nn.Linear(784, 1)
def forward(self, x):
return torch.sigmoid(self.fc(x))
B. def Discriminator():
return nn.Linear(784, 1)
C. class Discriminator:
def __init__(self):
self.fc = nn.Linear(784, 1)
def forward(self, x):
return torch.sigmoid(self.fc(x))
D. class Discriminator(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(784, 1)
def forward(self, x):
return torch.sigmoid(self.fc(x))
Solution
Step 1: Check PyTorch model class structure
A PyTorch model must inherit from nn.Module and call super().__init__() in __init__.
Step 2: Verify forward method and layers
class Discriminator(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(784, 1)
def forward(self, x):
return torch.sigmoid(self.fc(x)) correctly defines the class with inheritance, super call, layer, and forward method.
Final Answer:
Correct PyTorch discriminator class with inheritance and super call -> Option D
Quick Check:
Proper nn.Module subclass = A [OK]
Hint: PyTorch models inherit nn.Module and call super().__init__() [OK]
Common Mistakes:
Forgetting to inherit nn.Module
Missing super().__init__() call
Defining forward outside class
3. Given this PyTorch code snippet for a generator and discriminator, what will be the output shape of fake_output?
The generator outputs fake data with shape (16, 784), meaning batch size 16 and 784 features.
Step 2: Understand discriminator input and output shape
The discriminator takes input of shape (16, 784) and outputs shape (16, 1), one score per sample.
Final Answer:
torch.Size([16, 1]) -> Option A
Quick Check:
Discriminator output shape = (batch_size, 1) = A [OK]
Hint: Discriminator outputs one score per input sample [OK]
Common Mistakes:
Confusing input and output shapes
Mixing batch size and feature dimensions
Assuming output shape matches noise size
4. Identify the error in this discriminator training step code snippet:
optimizer.zero_grad()
output = discriminator(fake_data)
loss = criterion(output, real_labels)
loss.backward()
optimizer.step()
Assuming fake_data is generated by the generator and real_labels are labels for real data.
medium
A. Using real_labels for fake_data loss calculation
B. Not calling optimizer.zero_grad() before backward
C. Using fake_data instead of real_data for discriminator input
D. Missing loss.backward() call
Solution
Step 1: Check input and labels for discriminator
The discriminator should compare fake_data with fake labels, not real_labels.
Step 2: Identify label mismatch in loss calculation
Using real_labels with fake_data causes wrong loss and training signals.
Final Answer:
Using real_labels for fake_data loss calculation -> Option A
Quick Check:
Fake data needs fake labels = C [OK]
Hint: Match fake data with fake labels during discriminator training [OK]
Common Mistakes:
Mixing real and fake labels
Skipping zero_grad() call
Forgetting loss.backward()
5. You want to improve your GAN training stability. Which technique involving the discriminator can help reduce mode collapse and improve generator quality?
hard
A. Use dropout only in the generator
B. Use label smoothing on discriminator targets
C. Remove the discriminator and train generator alone
D. Increase generator learning rate only
Solution
Step 1: Understand mode collapse and training stability
Mode collapse happens when generator produces limited outputs; discriminator tricks help prevent it.
Step 2: Identify label smoothing effect
Label smoothing softens discriminator targets, preventing it from becoming too confident and stabilizing training.
Final Answer:
Use label smoothing on discriminator targets -> Option B
Quick Check:
Label smoothing stabilizes discriminator = D [OK]
Hint: Smooth discriminator labels to stabilize GAN training [OK]
Common Mistakes:
Ignoring discriminator role in stability
Changing only generator learning rate
Removing discriminator breaks GAN
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.