def convert_flatten(builder, layer, input_names, output_names, keras_layer):
    """
    Convert a flatten layer from keras to coreml.
    ----------
    Parameters
    keras_layer: layer
        A keras layer object.

    builder: NeuralNetworkBuilder
        A neural network builder object.
    """
    input_name, output_name = input_names[0], output_names[0]
    blob_order = 0
    try:
        in_shape = keras_layer.input_shape
        if len(in_shape) == 4:
            blob_order = 1
        if len(in_shape) == 3 and in_shape[0] is None:
            permute_output_name = output_name + '__permute__'
            builder.add_permute(name=layer + '__permute__', dim=(2, 1, 0, 3
                ), input_name=input_name, output_name=permute_output_name)
            builder.add_flatten(name=layer, mode=1, input_name=
                permute_output_name, output_name=output_name)
        else:
            builder.add_flatten(name=layer, mode=blob_order, input_name=
                input_name, output_name=output_name)
    except:
        builder.add_flatten(name=layer, mode=1, input_name=input_name,
            output_name=output_name)
