def discriminator(input_shape,
                  optimizer,
                  d_activation,
                  d_batchnorm,
                  dropout=0.1,
                  width_modifier=0.5):

    D = Sequential()

    # Input layer
    input_layer_width = input_shape
    D.add(Dense(input_layer_width, input_shape=(input_layer_width, )))
    D.add(d_activation)
    if d_batchnorm:
        D.add(BatchNormalization())
    D.add(Dropout(dropout))

    # First Hidden Layer
    first_layer_width = int(input_shape * width_modifier)
    D.add(Dense(first_layer_width))
    D.add(d_activation)
    if d_batchnorm:
        D.add(BatchNormalization())
    D.add(Dropout(dropout))

    # Second Hidden Layer
    second_layer_width = int(input_shape * width_modifier)
    D.add(Dense(second_layer_width))
    D.add(d_activation)
    if d_batchnorm:
        D.add(BatchNormalization())
    D.add(Dropout(dropout))

    # Third Hidden Layer
    third_layer_width = int(input_shape * width_modifier)
    D.add(Dense(third_layer_width))
    D.add(d_activation)
    if d_batchnorm:
        D.add(BatchNormalization())
    D.add(Dropout(dropout))

    # Output
    D.add(Dense(1, activation='sigmoid'))
    D._name = 'discriminator'
    D.compile(optimizer=optimizer,
              loss=label_smooth_sigmoid,
              metrics=['accuracy'])
    D.summary()

    return D
Ejemplo n.º 2
0
def generator(num_inputs, output_shape, optimizer, g_activation, g_batchnorm, generator_activation, dropout = 0.1, width_modifier = 0.5):

  G = Sequential()

  # Input layer
  input_layer_width = num_inputs
  G.add(Dense(input_layer_width, input_shape = (input_layer_width,)))
  G.add(g_activation)
  if g_batchnorm:
    G.add(BatchNormalization())
  G.add(Dropout(dropout))
  
  # First Hidden Layer
  first_layer_width = int(num_inputs * width_modifier)
  G.add(Dense(first_layer_width))
  G.add(g_activation)
  if g_batchnorm:
    G.add(BatchNormalization())
  G.add(Dropout(dropout))

  # Second Hidden Layer
  second_layer_width = int(num_inputs * width_modifier)
  G.add(Dense(second_layer_width))
  G.add(g_activation)
  if g_batchnorm:
    G.add(BatchNormalization())
  G.add(Dropout(dropout))

  # Third Hidden Layer
  third_layer_width = int(num_inputs * width_modifier)
  G.add(Dense(third_layer_width))
  G.add(g_activation)
  if g_batchnorm:
    G.add(BatchNormalization())
  G.add(Dropout(dropout))
  
  # Output layer 
  G.add(Dense(output_shape, activation = 'sigmoid'))
  G._name = 'generator'
  G.compile(optimizer = optimizer, loss = 'categorical_crossentropy')
  G.summary()
  return G