Skip to content

Instantly share code, notes, and snippets.

@MLWhiz
Created June 15, 2019 04:08
Show Gist options
  • Select an option

  • Save MLWhiz/c267ca3d10cb7aba0be84f556e3701e1 to your computer and use it in GitHub Desktop.

Select an option

Save MLWhiz/c267ca3d10cb7aba0be84f556e3701e1 to your computer and use it in GitHub Desktop.
def get_gen_normal(noise_shape):
''' This function takes as input shape of the noise vector and creates the Keras generator architecture.
'''
kernel_init = 'glorot_uniform'
gen_input = Input(shape = noise_shape)
# Transpose 2D conv layer 1.
generator = Conv2DTranspose(filters = 512, kernel_size = (4,4), strides = (1,1), padding = "valid", data_format = "channels_last", kernel_initializer = kernel_init)(gen_input)
generator = BatchNormalization(momentum = 0.5)(generator)
generator = LeakyReLU(0.2)(generator)
# Transpose 2D conv layer 2.
generator = Conv2DTranspose(filters = 256, kernel_size = (4,4), strides = (2,2), padding = "same", data_format = "channels_last", kernel_initializer = kernel_init)(generator)
generator = BatchNormalization(momentum = 0.5)(generator)
generator = LeakyReLU(0.2)(generator)
# Transpose 2D conv layer 3.
generator = Conv2DTranspose(filters = 128, kernel_size = (4,4), strides = (2,2), padding = "same", data_format = "channels_last", kernel_initializer = kernel_init)(generator)
generator = BatchNormalization(momentum = 0.5)(generator)
generator = LeakyReLU(0.2)(generator)
# Transpose 2D conv layer 4.
generator = Conv2DTranspose(filters = 64, kernel_size = (4,4), strides = (2,2), padding = "same", data_format = "channels_last", kernel_initializer = kernel_init)(generator)
generator = BatchNormalization(momentum = 0.5)(generator)
generator = LeakyReLU(0.2)(generator)
# conv 2D layer 1.
generator = Conv2D(filters = 64, kernel_size = (3,3), strides = (1,1), padding = "same", data_format = "channels_last", kernel_initializer = kernel_init)(generator)
generator = BatchNormalization(momentum = 0.5)(generator)
generator = LeakyReLU(0.2)(generator)
# Final Transpose 2D conv layer 5 to generate final image. Filter size 3 for 3 image channel
generator = Conv2DTranspose(filters = 3, kernel_size = (4,4), strides = (2,2), padding = "same", data_format = "channels_last", kernel_initializer = kernel_init)(generator)
# Tanh activation to get final normalized image
generator = Activation('tanh')(generator)
# defining the optimizer and compiling the generator model.
gen_opt = Adam(lr=0.00015, beta_1=0.5)
generator_model = Model(input = gen_input, output = generator)
generator_model.compile(loss='binary_crossentropy', optimizer=gen_opt, metrics=['accuracy'])
generator_model.summary()
return generator_model
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment