Complete the code to define the generator model input layer.
from tensorflow.keras import layers, models def build_generator(): model = models.Sequential() model.add(layers.Input(shape=([1],))) model.add(layers.Dense(128, activation='relu')) model.add(layers.Dense(784, activation='sigmoid')) return model
Complete the code to define the discriminator model output layer.
def build_discriminator(): model = models.Sequential() model.add(layers.Input(shape=(784,))) model.add(layers.Dense(128, activation='relu')) model.add(layers.Dense([1], activation='sigmoid')) return model
Fix the error in the GAN training step where the generator is updated.
import tensorflow as tf @tf.function def train_step(generator, discriminator, real_images, batch_size, noise_dim, generator_optimizer, discriminator_optimizer, loss_fn): noise = tf.random.normal([batch_size, [1]]) with tf.GradientTape() as gen_tape, tf.GradientTape() as disc_tape: generated_images = generator(noise, training=True) real_output = discriminator(real_images, training=True) fake_output = discriminator(generated_images, training=True) gen_loss = loss_fn(tf.ones_like(fake_output), fake_output) disc_loss = loss_fn(tf.ones_like(real_output), real_output) + loss_fn(tf.zeros_like(fake_output), fake_output) gradients_of_generator = gen_tape.gradient(gen_loss, generator.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))
Fill both blanks to create a dictionary comprehension that maps noise vectors to generated images only if the noise norm is greater than 1.
noise_vectors = [tf.random.normal([100]) for _ in range(5)] generated_dict = [1]: generator([2], training=False) for [1] in noise_vectors if tf.norm([2]) > 1}
Fill all three blanks to create a training loop that runs for epochs, generates noise, and trains the GAN.
epochs = 10 batch_size = 32 noise_dim = [1] generator_optimizer = tf.keras.optimizers.Adam() discriminator_optimizer = tf.keras.optimizers.Adam() for epoch in range([2]): noise = tf.random.normal([[3], noise_dim]) # Assume real_images is loaded batch train_step(generator, discriminator, real_images, batch_size, noise_dim, generator_optimizer, discriminator_optimizer, loss_fn)
