Practice - 5 Tasks
Answer the questions below
1fill in blank
easyComplete the code to define the generator model input layer.
TensorFlow
generator = tf.keras.Sequential([
tf.keras.layers.Dense(7 * 7 * 256, use_bias=False, input_shape=([1],)),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Reshape((7, 7, 256)),
tf.keras.layers.Conv2DTranspose(128, (5, 5), strides=(1, 1), padding='same', use_bias=False),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Conv2DTranspose(64, (5, 5), strides=(2, 2), padding='same', use_bias=False),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Conv2DTranspose(1, (5, 5), strides=(2, 2), padding='same', use_bias=False, activation='tanh')
])Attempts:
3 left
💡 Hint
Common Mistakes
Using image dimensions instead of noise vector size.
Confusing number of filters with input shape.
✗ Incorrect
The generator input shape is a vector of size 100 representing the noise input.
2fill in blank
mediumComplete the code to define the discriminator model output layer.
TensorFlow
discriminator = tf.keras.Sequential([
tf.keras.layers.Conv2D(64, (5, 5), strides=(2, 2), padding='same', input_shape=(28, 28, 1)),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Dropout(0.3),
tf.keras.layers.Conv2D(128, (5, 5), strides=(2, 2), padding='same'),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Dropout(0.3),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense([1], activation='sigmoid')
])Attempts:
3 left
💡 Hint
Common Mistakes
Using multiple output neurons instead of one.
Forgetting to use sigmoid activation.
✗ Incorrect
The discriminator outputs a single probability value indicating real or fake.
3fill in blank
hardFix the error in the training step where the generator loss is computed.
TensorFlow
def generator_loss(fake_output): return cross_entropy(tf.ones_like(fake_output), [1])
Attempts:
3 left
💡 Hint
Common Mistakes
Using undefined variables like real_output or noise.
Using discriminator output on real images instead of fake.
✗ Incorrect
Generator loss compares fake output to ones to fool the discriminator.
4fill in blank
hardFill both blanks to complete the training step function for GAN.
TensorFlow
def train_step(images): noise = tf.random.normal([[1], 100]) with tf.GradientTape() as gen_tape, tf.GradientTape() as disc_tape: generated_images = generator(noise, training=True) real_output = discriminator(images, training=True) fake_output = discriminator(generated_images, training=True) gen_loss = generator_loss(fake_output) disc_loss = discriminator_loss(real_output, fake_output) gradients_of_generator = gen_tape.gradient(gen_loss, [2].trainable_variables) gradients_of_discriminator = disc_tape.gradient(disc_loss, discriminator.trainable_variables) generator_optimizer.apply_gradients(zip(gradients_of_generator, generator.trainable_variables)) discriminator_optimizer.apply_gradients(zip(gradients_of_discriminator, discriminator.trainable_variables))
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong batch size for noise.
Computing gradients for discriminator variables in generator gradient step.
✗ Incorrect
Batch size is 32 and gradients are computed for the generator model.
5fill in blank
hardFill all three blanks to complete the code that generates and saves images during training.
TensorFlow
def generate_and_save_images(model, epoch, test_input): predictions = model([1], training=False) fig = plt.figure(figsize=(4, 4)) for i in range(predictions.shape[0]): plt.subplot(4, 4, i + 1) plt.imshow(predictions[i, :, :, 0] * 127.5 + 127.5, cmap='gray') plt.axis('[2]') plt.savefig('image_at_epoch_[3].png') plt.close(fig)
Attempts:
3 left
💡 Hint
Common Mistakes
Using undefined variable noise instead of test_input.
Forgetting to turn axis off.
Not saving images with epoch number.
✗ Incorrect
Use test_input for predictions, turn axis off, and save with epoch number.
