- Variational Autoencoders (VAEs): Keras has examples for creating a variational autoencoder that generates new images by learning the latent space of the input data.
- Generative Adversarial Networks (GANs): A more advanced model that pits two networks against each other: a generator and a discriminator.
pythonCopy codefrom tensorflow.keras import layers, models, backend as K
from tensorflow.keras.losses import binary_crossentropy
# Sampling function for VAE
def sampling(args):
z_mean, z_log_var = args
epsilon = K.random_normal(shape=(K.shape(z_mean)[0], K.int_shape(z_mean)[1]))
return z_mean + K.exp(0.5 * z_log_var) * epsilon
# Build encoder
inputs = layers.Input(shape=(28, 28, 1))
x = layers.Conv2D(32, 3, activation="relu", padding="same")(inputs)
z_mean = layers.Dense(2, name="z_mean")(x)
z_log_var = layers.Dense(2, name="z_log_var")(x)
z = layers.Lambda(sampling, output_shape=(2,), name="z")([z_mean, z_log_var])
# Build decoder
decoder = models.Sequential([
layers.InputLayer(input_shape=(2,)),
layers.Dense(128, activation='relu'),
layers.Reshape((4, 4, 8)),
layers.Conv2DTranspose(32, 3, activation='relu'),
layers.Conv2D(1, 3, activation='sigmoid')
])
# Define the VAE
vae = models.Model(inputs, decoder(z))
vae.compile(optimizer='adam', loss='mse')
Leave a Reply