def get_prepared_model(stage: str, no_classes: int, input_shape: list, loss: str, optimizer: str, metrics: list) -> Model:
    "Function creates ANN model and compile.\n    Args:\n        stage ([str]): stage of experiment\n        no_classes ([INT]): No of classes for classification\n        input_shape ([int, int]): Input shape for model's input layer\n        loss ([str]): Loss function for model\n        optimizer ([str]): Optimizer for model\n        metrics ([str]): Metrics to watch while training\n    Returns:\n        model: ANN demo model\n    "
    LAYERS = []
    BASE_LAYERS = [tf.keras.layers.Flatten(input_shape=input_shape, name='input_layer'), tf.keras.layers.Dense(units=392, activation='relu', name='hidden1'), tf.keras.layers.Dense(units=196, activation='relu', name='hidden2'), tf.keras.layers.Dense(units=no_classes, activation='softmax', name='output_layer')]
    KERNEL_INIT_LAYERS = [tf.keras.layers.Flatten(input_shape=input_shape, name='input_layer'), tf.keras.layers.Dense(units=392, activation='relu', name='hidden1', kernel_initializer='glorot_uniform', bias_initializer='zeros'), tf.keras.layers.Dense(units=196, activation='relu', name='hidden2', kernel_initializer='glorot_uniform', bias_initializer='zeros'), tf.keras.layers.Dense(units=no_classes, activation='softmax', name='output_layer')]
    BN_BEFORE_LAYERS = [tf.keras.layers.Flatten(input_shape=input_shape, name='input_layer'), tf.keras.layers.Dense(units=392, name='hidden1', kernel_initializer='glorot_uniform'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Activation('relu'), tf.keras.layers.Dense(units=196, name='hidden2', kernel_initializer='glorot_uniform'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Activation('relu'), tf.keras.layers.Dense(units=no_classes, activation='softmax', name='output_layer')]
    BN_AFTER_LAYERS = [tf.keras.layers.Flatten(input_shape=input_shape, name='input_layer'), tf.keras.layers.Dense(units=392, activation='relu', name='hidden1', kernel_initializer='glorot_uniform', bias_initializer='zeros'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Dense(units=196, activation='relu', name='hidden2', kernel_initializer='glorot_uniform', bias_initializer='zeros'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Dense(units=no_classes, activation='softmax', name='output_layer')]
    logging.info('Creating Model..')
    if (stage == 'BASE_MODEL'):
        LAYERS = BASE_LAYERS
    elif (stage == 'KERNEL_INIT_MODEL'):
        LAYERS = KERNEL_INIT_LAYERS
    elif (stage == 'BN_BEFORE_MODEL'):
        LAYERS = BN_BEFORE_LAYERS
    elif (stage == 'BN_AFTER_MODEL'):
        LAYERS = BN_AFTER_LAYERS
    model_ann = tf.keras.models.Sequential(LAYERS)
    logging.info('Compiling Model..')
    model_ann.compile(loss=loss, optimizer=optimizer, metrics=metrics)
    return model_ann
Function creates ANN model and compile.
Args:
    stage ([str]): stage of experiment
    no_classes ([INT]): No of classes for classification
    input_shape ([int, int]): Input shape for model's input layer
    loss ([str]): Loss function for model
    optimizer ([str]): Optimizer for model
    metrics ([str]): Metrics to watch while training
Returns:
    model: ANN demo model
def get_prepared_model(stage: str, no_classes: int, input_shape: list, loss: str, optimizer: str, metrics: list) -> Model:
    "Function creates ANN model and compile.\n    Args:\n        stage ([str]): stage of experiment\n        no_classes ([INT]): No of classes for classification\n        input_shape ([int, int]): Input shape for model's input layer\n        loss ([str]): Loss function for model\n        optimizer ([str]): Optimizer for model\n        metrics ([str]): Metrics to watch while training\n    Returns:\n        model: ANN demo model\n    "
    LAYERS = []
    BASE_LAYERS = [tf.keras.layers.Flatten(input_shape=input_shape, name='input_layer'), tf.keras.layers.Dense(units=392, activation='relu', name='hidden1'), tf.keras.layers.Dense(units=196, activation='relu', name='hidden2'), tf.keras.layers.Dense(units=no_classes, activation='softmax', name='output_layer')]
    KERNEL_INIT_LAYERS = [tf.keras.layers.Flatten(input_shape=input_shape, name='input_layer'), tf.keras.layers.Dense(units=392, activation='relu', name='hidden1', kernel_initializer='glorot_uniform', bias_initializer='zeros'), tf.keras.layers.Dense(units=196, activation='relu', name='hidden2', kernel_initializer='glorot_uniform', bias_initializer='zeros'), tf.keras.layers.Dense(units=no_classes, activation='softmax', name='output_layer')]
    BN_BEFORE_LAYERS = [tf.keras.layers.Flatten(input_shape=input_shape, name='input_layer'), tf.keras.layers.Dense(units=392, name='hidden1', kernel_initializer='glorot_uniform'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Activation('relu'), tf.keras.layers.Dense(units=196, name='hidden2', kernel_initializer='glorot_uniform'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Activation('relu'), tf.keras.layers.Dense(units=no_classes, activation='softmax', name='output_layer')]
    BN_AFTER_LAYERS = [tf.keras.layers.Flatten(input_shape=input_shape, name='input_layer'), tf.keras.layers.Dense(units=392, activation='relu', name='hidden1', kernel_initializer='glorot_uniform', bias_initializer='zeros'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Dense(units=196, activation='relu', name='hidden2', kernel_initializer='glorot_uniform', bias_initializer='zeros'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Dense(units=no_classes, activation='softmax', name='output_layer')]
    logging.info('Creating Model..')
    if (stage == 'BASE_MODEL'):
        LAYERS = BASE_LAYERS
    elif (stage == 'KERNEL_INIT_MODEL'):
        LAYERS = KERNEL_INIT_LAYERS
    elif (stage == 'BN_BEFORE_MODEL'):
        LAYERS = BN_BEFORE_LAYERS
    elif (stage == 'BN_AFTER_MODEL'):
        LAYERS = BN_AFTER_LAYERS
    model_ann = tf.keras.models.Sequential(LAYERS)
    logging.info('Compiling Model..')
    model_ann.compile(loss=loss, optimizer=optimizer, metrics=metrics)
    return model_ann