input_images, input_labels = model_inputs[:, 0:1024], model_inputs[:, 1024:1034] decoder_inputs = layers.Concatenate(name='decoder_inputs')( [sampler(encoder(input_images)), input_labels]) model_outputs = layers.Concatenate(name='prediction_with_mean_log_var')( [encoder(input_images), decoder(decoder_inputs)]) model = models.Model(inputs=model_inputs, outputs=model_outputs, name='conditional_VAE') decoder = models.Sequential(name='conditional_decoder') decoder.add(layers.Input(shape=(12,), name='decoder_input')) decoder.add(layers.Dense(4 * 4 * 128, name='expand')) decoder.add(layers.Reshape((4, 4, 128), name='reshape')) decoder.add(layers.Conv2DTranspose(64, (3, 3), strides=2, padding='same', activation='relu', name='conv_transpose1')) # (8, 8, 64) decoder.add(layers.Conv2DTranspose(32, (3, 3), strides=2, padding='same', activation='relu', name='conv_transpose2')) # (16, 16, 32) decoder.add(layers.Conv2DTranspose(1, (3, 3), strides=2, padding='same', activation='sigmoid', name='conv_transpose3')) # (32, 32, 1) decoder.add(layers.Flatten(name='flatten')) 70