def _obtain_weights_CSVLogger_filenames(violation_class, train_mode,
    model_name, nb_of_conv_layers_to_fine_tune):
    """Obtains the polished filenames for the weights and the CSVLogger of the model.

    # Arguments
        violation_class: violation_class: one of `cl` (HRA dataset with 2 classes - [i]'child_labour' and [ii]'no violation')
            or `dp` (HRA dataset with 2 classes - [i]'displaced_populations' and [ii]'no violation').
        train_mode: String to declare the train mode of the model (how many layers will be frozen during training).
            - `feature_extraction` taking the convolutional base of a previously-trained network,
                running the new data through it, and training a new classifier on top of the output.
            - `fine_tuning` unfreezing a few of the top layers of a frozen conv. base used for feature extraction,
                and jointly training both the newly added part of the model and these top layers.
        model_name: String to declare the name of the model
        nb_of_conv_layers_to_fine_tune: integer to indicate the number of convolutional
            layers to fine-tune. One of `1`, `2` or `3`.

    # Returns
        Two strings that will serve as the filenames for the weights and the CSVLogger respectively.
    """
    if violation_class == 'cl':
        if train_mode == 'feature_extraction':
            weights_filename = ('trained_models/' + 'cl_' + model_name +
                '_weights_feature_extraction_tf_dim_ordering_tf_kernels.h5')
            CSVLogger_filename = model_name + '_cl_feature_extraction.csv'
        elif nb_of_conv_layers_to_fine_tune == 1:
            weights_filename = ('trained_models/' + 'cl_' + model_name +
                '_weights_one_layer_tf_dim_ordering_tf_kernels.h5')
            CSVLogger_filename = model_name + '_cl_fine_tuning_one_layer.csv'
        elif nb_of_conv_layers_to_fine_tune == 2:
            weights_filename = ('trained_models/' + 'cl_' + model_name +
                '_weights_two_layers_tf_dim_ordering_tf_kernels.h5')
            CSVLogger_filename = model_name + '_cl_fine_tuning_two_layers.csv'
        elif nb_of_conv_layers_to_fine_tune == 3:
            weights_filename = ('trained_models/' + 'cl_' + model_name +
                '_weights_three_layers_tf_dim_ordering_tf_kernels.h5')
            CSVLogger_filename = (model_name +
                '_cl_fine_tuning_three_layers.csv')
        else:
            raise NotImplementedError(
                'The `nb_of_conv_layers_to_fine_tune` argument should be either `1`, `2` or `3`. More than 3 conv. blocks are not supported because the more parameters we are training, the more we are at risk of overfitting.'
                )
    elif violation_class == 'dp':
        if train_mode == 'feature_extraction':
            weights_filename = ('trained_models/' + 'dp_' + model_name +
                '_weights_feature_extraction_tf_dim_ordering_tf_kernels.h5')
            CSVLogger_filename = model_name + '_dp_feature_extraction.csv'
        elif nb_of_conv_layers_to_fine_tune == 1:
            weights_filename = ('trained_models/' + 'dp_' + model_name +
                '_weights_one_layer_tf_dim_ordering_tf_kernels.h5')
            CSVLogger_filename = model_name + '_dp_fine_tuning_one_layer.csv'
        elif nb_of_conv_layers_to_fine_tune == 2:
            weights_filename = ('trained_models/' + 'dp_' + model_name +
                '_weights_two_layers_tf_dim_ordering_tf_kernels.h5')
            CSVLogger_filename = model_name + '_dp_fine_tuning_two_layers.csv'
        elif nb_of_conv_layers_to_fine_tune == 3:
            weights_filename = ('trained_models/' + 'dp_' + model_name +
                '_weights_three_layers_tf_dim_ordering_tf_kernels.h5')
            CSVLogger_filename = (model_name +
                '_dp_cl_fine_tuning_three_layers.csv')
        else:
            raise NotImplementedError(
                'The `nb_of_conv_layers_to_fine_tune` argument should be either `1`, `2` or `3`. More than 3 conv. blocks are not supported because the more parameters we are training, the more we are at risk of overfitting.'
                )
    return weights_filename, CSVLogger_filename
