From 125817c1415062007f115d079e2b220bb80ec89b Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 06:27:00 +0100 Subject: [PATCH 01/18] Add back kmeans method in the trainer (disapeared during a merge) --- code/bolsonaro/trainer.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/bolsonaro/trainer.py b/code/bolsonaro/trainer.py index 7070126..34b76c8 100644 --- a/code/bolsonaro/trainer.py +++ b/code/bolsonaro/trainer.py @@ -96,7 +96,7 @@ class Trainer(object): self._end_time = time.time() def __score_func(self, model, X, y_true, weights=True): - if type(model) in [OmpForestRegressor, RandomForestRegressor, SimilarityForestRegressor]: + if type(model) in [OmpForestRegressor, RandomForestRegressor]: if weights: y_pred = model.predict(X) else: @@ -109,12 +109,14 @@ class Trainer(object): y_pred = model.predict_no_weights(X) if type(model) is OmpForestBinaryClassifier: y_pred = np.sign(y_pred) - y_pred = np.where(y_pred==0, 1, y_pred) + y_pred = np.where(y_pred == 0, 1, y_pred) result = self._classification_score_metric(y_true, y_pred) + elif type(model) in [SimilarityForestRegressor, KMeansForestRegressor]: + result = model.score(X, y_true) return result def __score_func_base(self, model, X, y_true): - if type(model) == OmpForestRegressor: + if type(model) in [OmpForestRegressor, SimilarityForestRegressor, KMeansForestRegressor]: y_pred = model.predict_base_estimator(X) result = self._base_regression_score_metric(y_true, y_pred) elif type(model) in [OmpForestBinaryClassifier, OmpForestMulticlassClassifier]: @@ -123,7 +125,7 @@ class Trainer(object): elif type(model) == RandomForestClassifier: y_pred = model.predict(X) result = self._base_classification_score_metric(y_true, y_pred) - elif type(model) in [RandomForestRegressor, SimilarityForestRegressor]: + elif type(model) is RandomForestRegressor: y_pred = model.predict(X) result = self._base_regression_score_metric(y_true, y_pred) return result -- GitLab From 946689044aa7e053417b9f52b5d31903cd0f59b7 Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 06:28:55 +0100 Subject: [PATCH 02/18] Remove two deprecated points in the unused TODO list (uncomplete yet) --- TODO.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index b94e576..3a7a10f 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1 @@ -* Fix model results loading in compute_results.py. -* Check that omp multiclasses classifier is working as expected. -* Fix the dataset error of fetcher when job_number > 1. \ No newline at end of file +* Check that omp multiclasses classifier is working as expected. \ No newline at end of file -- GitLab From ca5d00805fbc089a5ad1980c64a3cb77bcd76029 Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 06:32:03 +0100 Subject: [PATCH 03/18] Add missing import in trainer --- code/bolsonaro/trainer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/code/bolsonaro/trainer.py b/code/bolsonaro/trainer.py index 34b76c8..6ec3909 100644 --- a/code/bolsonaro/trainer.py +++ b/code/bolsonaro/trainer.py @@ -2,6 +2,7 @@ from bolsonaro.models.model_raw_results import ModelRawResults from bolsonaro.models.omp_forest_regressor import OmpForestRegressor from bolsonaro.models.omp_forest_classifier import OmpForestBinaryClassifier, OmpForestMulticlassClassifier from bolsonaro.models.similarity_forest_regressor import SimilarityForestRegressor +from bolsonaro.models.kmeans_forest_regressor import KMeansForestRegressor from bolsonaro.error_handling.logger_factory import LoggerFactory from bolsonaro.data.task import Task from . import LOG_PATH -- GitLab From 46a4a8b0b766eabc9886bfd64a0c90fbede9e2f0 Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 06:40:09 +0100 Subject: [PATCH 04/18] Add stage5 scripts for kmeans and sim --- scripts/run_stage5_experiments_kmeans.sh | 12 ++++++++++++ scripts/run_stage5_experiments_similarity.sh | 12 ++++++++++++ 2 files changed, 24 insertions(+) create mode 100755 scripts/run_stage5_experiments_kmeans.sh create mode 100755 scripts/run_stage5_experiments_similarity.sh diff --git a/scripts/run_stage5_experiments_kmeans.sh b/scripts/run_stage5_experiments_kmeans.sh new file mode 100755 index 0000000..b5beae6 --- /dev/null +++ b/scripts/run_stage5_experiments_kmeans.sh @@ -0,0 +1,12 @@ +#!/bin/bash +core_number=50 +walltime=5:00 +seeds='1 2 3' + +for dataset in diabetes diamonds boston california_housing +do + oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=none --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=1 --models_dir=models/$dataset/stage5_kmeans --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=random --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=2 --models_dir=models/$dataset/stage5_kmeans --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=omp --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=3 --models_dir=models/$dataset/stage5_kmeans --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -l /core=50,walltime=5:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=kmeans --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=4 --models_dir=models/$dataset/stage5_kmeans --subsets_used train+dev,train+dev" +done diff --git a/scripts/run_stage5_experiments_similarity.sh b/scripts/run_stage5_experiments_similarity.sh new file mode 100755 index 0000000..d7be4e9 --- /dev/null +++ b/scripts/run_stage5_experiments_similarity.sh @@ -0,0 +1,12 @@ +#!/bin/bash +core_number=1 +walltime=5:00 +seeds='1 2 3' + +for dataset in diabetes diamonds boston california_housing +do + oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=none --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=1 --models_dir=models/$dataset/stage5_similarity --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=random --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=2 --models_dir=models/$dataset/stage5_similarity --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=omp --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=3 --models_dir=models/$dataset/stage5_similarity --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -l /core=50,walltime=5:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=similarity --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=4 --models_dir=models/$dataset/stage5_similarity --subsets_used train+dev,train+dev" +done -- GitLab From 0363926f98057236a736e18b146507f1c8529ee4 Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 06:51:49 +0100 Subject: [PATCH 05/18] Add wo_weights and similarity in stage5 loss plot --- code/compute_results.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/code/compute_results.py b/code/compute_results.py index 5f7fac2..3bd2f8a 100644 --- a/code/compute_results.py +++ b/code/compute_results.py @@ -420,26 +420,36 @@ if __name__ == "__main__": omp_with_params_train_scores, omp_with_params_dev_scores, omp_with_params_test_scores, _, \ omp_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( args.models_dir, args.results_dir, args.experiment_ids[2]) - # omp_with_params + #omp_with_params_without_weights + logger.info('Loading omp_with_params experiment scores...') + omp_with_params_without_weights_train_scores, omp_with_params_without_weights_dev_scores, omp_with_params_without_weights_test_scores, _, \ + omp_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( + args.models_dir, args.results_dir, args.experiment_ids[2], weights=False) + # kmeans_with_params logger.info('Loading kmeans_with_params experiment scores...') kmeans_with_params_train_scores, kmeans_with_params_dev_scores, kmeans_with_params_test_scores, _, \ kmeans_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( args.models_dir, args.results_dir, args.experiment_ids[3]) - + # similarity_with_params + logger.info('Loading similarity_with_params experiment scores...') + similarity_with_params_train_scores, similarity_with_params_dev_scores, similarity_with_params_test_scores, _, \ + similarity_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( + args.models_dir, args.results_dir, args.experiment_ids[4]) + # Sanity check on the metrics retreived if not (base_with_params_experiment_score_metric == random_with_params_experiment_score_metric == omp_with_params_experiment_score_metric == kmeans_with_params_experiment_score_metric): raise ValueError('Score metrics of all experiments must be the same.') experiments_score_metric = base_with_params_experiment_score_metric - output_path = os.path.join(args.results_dir, args.dataset_name, 'stage5_kmeans') + output_path = os.path.join(args.results_dir, args.dataset_name, 'stage5') pathlib.Path(output_path).mkdir(parents=True, exist_ok=True) Plotter.plot_stage2_losses( file_path=output_path + os.sep + 'losses.png', all_experiment_scores=[base_with_params_test_scores, random_with_params_test_scores, omp_with_params_test_scores, - kmeans_with_params_test_scores], - all_labels=['base', 'random', 'omp', 'kmeans'], + omp_with_params_without_weights_test_scores, kmeans_with_params_test_scores, similarity_with_params_test_scores], + all_labels=['base', 'random', 'omp', 'omp_without_weights', 'kmeans', 'similarity'], x_value=with_params_extracted_forest_sizes, xlabel='Number of trees extracted', ylabel=experiments_score_metric, -- GitLab From 1194ee2f9cfe33b74dadb2daf66c24605321e747 Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 08:54:10 +0100 Subject: [PATCH 06/18] Integrate Paolo's code of method 'Ensemble selection from libraries of models' by Rich Caruana et al --- .../ensemble_selection_forest_regressor.py | 90 +++++++++++++++++ code/bolsonaro/models/model_factory.py | 5 +- code/compute_results.py | 97 ++++++++++--------- code/train.py | 18 ++-- scripts/run_stage5_experiments_ensemble.sh | 12 +++ 5 files changed, 170 insertions(+), 52 deletions(-) create mode 100644 code/bolsonaro/models/ensemble_selection_forest_regressor.py create mode 100755 scripts/run_stage5_experiments_ensemble.sh diff --git a/code/bolsonaro/models/ensemble_selection_forest_regressor.py b/code/bolsonaro/models/ensemble_selection_forest_regressor.py new file mode 100644 index 0000000..a20d8ec --- /dev/null +++ b/code/bolsonaro/models/ensemble_selection_forest_regressor.py @@ -0,0 +1,90 @@ +from sklearn.metrics import mean_squared_error +from sklearn.base import BaseEstimator +from sklearn.tree import DecisionTreeRegressor +from abc import abstractmethod, ABCMeta +import numpy as np +from tqdm import tqdm + + +class EnsembleSelectionForestRegressor(BaseEstimator, metaclass=ABCMeta): + """ + 'Ensemble selection from libraries of models' by Rich Caruana et al + """ + + def __init__(self, models_parameters, library, score_metric=mean_squared_error): + self._models_parameters = models_parameters + self._library = library + self._extracted_forest_size = self._models_parameters.extracted_forest_size + self._score_metric = score_metric + + @property + def models_parameters(self): + return self._models_parameters + + @property + def library(self): + return self._library + + def fit(self, X_train, y_train, X_val, y_val): + scores_list = list() + for estimator in self._library: + val_score = self._score_metric(estimator.predict(X_val), y_val) + scores_list.append(val_score) + + class_list = list(library) + m = np.argmax(np.asarray(scores_list)) + self._ensemble_selected = [class_list[m]] + temp_pred = class_list[m].predict(X_val) + del class_list[m] + for k in range(self._extracted_forest_size - 1): + candidate_index = 0 + best_score = 100000 + for j in range(len(class_list)): + temp_pred = np.vstack((temp_pred, class_list[j].predict(X_val))) + temp_mean = np.mean(temp_pred, axis=0) + temp_score = self._score_metric(temp_mean, y_val) + if (temp_score < best_score): + candidate_index = j + best_score = tmp_score + temp_pred = np.delete(temp_pred, -1, 0) + self._ensemble_selected.append(class_list[candidate_index]) + temp_pred = np.vstack((temp_pred, class_list[candidate_index].predict(X_val))) + del class_list[candidate_index] + + def score(self, X, y): + predictions = self._predict_base_estimator(X) + mean_predictions = np.mean(predictions, axis=0) + return self._score_metric(mean_predictions, y) + + def predict_base_estimator(self, X): + predictions = list() + for tree in self._ensemble_selected: + predictions.append(tree.predict(X)) + return np.array(predictions) + + @staticmethod + def generate_library(X_train, y_train, random_state=None): + criterion_arr = ["mse"]#, "friedman_mse", "mae"] + splitter_arr = ["best"]#, "random"] + depth_arr = [i for i in range(5, 20, 1)] + min_samples_split_arr = [i for i in range(2, 20, 1)] + min_samples_leaf_arr = [i for i in range(2, 20, 1)] + max_features_arr = ["sqrt"]#["auto", "sqrt", "log2"] + + library = list() + with tqdm(total=len(criterion_arr) * len(splitter_arr) * \ + len(depth_arr) * len(min_samples_split_arr) * len(min_samples_leaf_arr) * \ + len(max_features_arr)) as bar: + bar.set_description('Generating library') + for criterion in criterion_arr: + for splitter in splitter_arr: + for depth in depth_arr: + for min_samples_split in min_samples_split_arr: + for min_samples_leaf in min_samples_leaf_arr: + for max_features in max_features_arr: + t = DecisionTreeRegressor(criterion=criterion, splitter=splitter, max_depth=depth, min_samples_split=min_samples_split, + min_samples_leaf=min_samples_leaf, max_features=max_features, random_state=random_state) + t.fit(X_train, y_train) + library.append(t) + bar.update(1) + return library diff --git a/code/bolsonaro/models/model_factory.py b/code/bolsonaro/models/model_factory.py index bbda6ca..eb3e8b5 100644 --- a/code/bolsonaro/models/model_factory.py +++ b/code/bolsonaro/models/model_factory.py @@ -3,6 +3,7 @@ from bolsonaro.models.omp_forest_regressor import OmpForestRegressor from bolsonaro.models.model_parameters import ModelParameters from bolsonaro.models.similarity_forest_regressor import SimilarityForestRegressor from bolsonaro.models.kmeans_forest_regressor import KMeansForestRegressor +from bolsonaro.models.ensemble_selection_forest_regressor import EnsembleSelectionForestRegressor from bolsonaro.data.task import Task from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier @@ -13,7 +14,7 @@ import pickle class ModelFactory(object): @staticmethod - def build(task, model_parameters): + def build(task, model_parameters, library=None): if task not in [Task.BINARYCLASSIFICATION, Task.REGRESSION, Task.MULTICLASSIFICATION]: raise ValueError("Unsupported task '{}'".format(task)) @@ -38,6 +39,8 @@ class ModelFactory(object): return SimilarityForestRegressor(model_parameters) elif model_parameters.extraction_strategy == 'kmeans': return KMeansForestRegressor(model_parameters) + elif model_parameters.extraction_strategy == 'ensemble': + return EnsembleSelectionForestRegressor(model_parameters, library=library) elif model_parameters.extraction_strategy == 'none': return RandomForestRegressor(n_estimators=model_parameters.hyperparameters['n_estimators'], random_state=model_parameters.seed) diff --git a/code/compute_results.py b/code/compute_results.py index 3bd2f8a..406f0e0 100644 --- a/code/compute_results.py +++ b/code/compute_results.py @@ -133,10 +133,11 @@ if __name__ == "__main__": parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('--stage', nargs='?', type=int, required=True, help='Specify the stage number among [1, 5].') - parser.add_argument('--experiment_ids', nargs='+', type=int, required=True, help='Compute the results of the specified experiment id(s).' + \ + parser.add_argument('--experiment_ids', nargs='+', type=str, required=True, help='Compute the results of the specified experiment id(s).' + \ 'stage=1: {{base_with_params}} {{random_with_params}} {{omp_with_params}} {{base_wo_params}} {{random_wo_params}} {{omp_wo_params}}' + \ 'stage=2: {{no_normalization}} {{normalize_D}} {{normalize_weights}} {{normalize_D_and_weights}}' + \ - 'stage=3: {{train-dev_subset}} {{train-dev_train-dev_subset}} {{train-train-dev_subset}}') + 'stage=3: {{train-dev_subset}} {{train-dev_train-dev_subset}} {{train-train-dev_subset}}' + \ + 'stage=5: {{base_with_params}} {{random_with_params}} {{omp_with_params}} [ensemble={{id}}] [similarity={{id}}] [kmean={{id}}]') parser.add_argument('--dataset_name', nargs='?', type=str, required=True, help='Specify the dataset name. TODO: read it from models dir directly.') parser.add_argument('--results_dir', nargs='?', type=str, default=DEFAULT_RESULTS_DIR, help='The output directory of the results.') parser.add_argument('--models_dir', nargs='?', type=str, default=DEFAULT_MODELS_DIR, help='The output directory of the trained models.') @@ -159,7 +160,7 @@ if __name__ == "__main__": raise ValueError('In the case of stage 1, the number of specified experiment ids must be 6.') # Retreive the extracted forest sizes number used in order to have a base forest axis as long as necessary - extracted_forest_sizes_number = retreive_extracted_forest_sizes_number(args.models_dir, args.experiment_ids[1]) + extracted_forest_sizes_number = retreive_extracted_forest_sizes_number(args.models_dir, int(args.experiment_ids[1])) # Experiments that used the best hyperparameters found for this dataset @@ -167,18 +168,18 @@ if __name__ == "__main__": logger.info('Loading base_with_params experiment scores...') base_with_params_train_scores, base_with_params_dev_scores, base_with_params_test_scores, \ base_with_params_experiment_score_metric = \ - extract_scores_across_seeds_and_forest_size(args.models_dir, args.results_dir, args.experiment_ids[0], + extract_scores_across_seeds_and_forest_size(args.models_dir, args.results_dir, int(args.experiment_ids[0]), extracted_forest_sizes_number) # random_with_params logger.info('Loading random_with_params experiment scores...') random_with_params_train_scores, random_with_params_dev_scores, random_with_params_test_scores, \ with_params_extracted_forest_sizes, random_with_params_experiment_score_metric = \ - extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, args.experiment_ids[1]) + extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, int(args.experiment_ids[1])) # omp_with_params logger.info('Loading omp_with_params experiment scores...') omp_with_params_train_scores, omp_with_params_dev_scores, omp_with_params_test_scores, _, \ omp_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( - args.models_dir, args.results_dir, args.experiment_ids[2]) + args.models_dir, args.results_dir, int(args.experiment_ids[2])) # Experiments that didn't use the best hyperparameters found for this dataset @@ -186,19 +187,19 @@ if __name__ == "__main__": logger.info('Loading base_wo_params experiment scores...') base_wo_params_train_scores, base_wo_params_dev_scores, base_wo_params_test_scores, \ base_wo_params_experiment_score_metric = extract_scores_across_seeds_and_forest_size( - args.models_dir, args.results_dir, args.experiment_ids[3], + args.models_dir, args.results_dir, int(args.experiment_ids[3]), extracted_forest_sizes_number) # random_wo_params logger.info('Loading random_wo_params experiment scores...') random_wo_params_train_scores, random_wo_params_dev_scores, random_wo_params_test_scores, \ wo_params_extracted_forest_sizes, random_wo_params_experiment_score_metric = \ extract_scores_across_seeds_and_extracted_forest_sizes( - args.models_dir, args.results_dir, args.experiment_ids[4]) + args.models_dir, args.results_dir, int(args.experiment_ids[4])) # base_wo_params logger.info('Loading base_wo_params experiment scores...') omp_wo_params_train_scores, omp_wo_params_dev_scores, omp_wo_params_test_scores, _, \ omp_wo_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( - args.models_dir, args.results_dir, args.experiment_ids[5]) + args.models_dir, args.results_dir, int(args.experiment_ids[5])) # Sanity check on the metrics retreived if not (base_with_params_experiment_score_metric == random_with_params_experiment_score_metric == @@ -243,25 +244,25 @@ if __name__ == "__main__": logger.info('Loading no_normalization experiment scores...') _, _, no_normalization_test_scores, extracted_forest_sizes, no_normalization_experiment_score_metric = \ extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, - args.experiment_ids[0]) + int(args.experiment_ids[0])) # normalize_D logger.info('Loading normalize_D experiment scores...') _, _, normalize_D_test_scores, _, normalize_D_experiment_score_metric = \ extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, - args.experiment_ids[1]) + int(args.experiment_ids[1])) # normalize_weights logger.info('Loading normalize_weights experiment scores...') _, _, normalize_weights_test_scores, _, normalize_weights_experiment_score_metric = \ extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, - args.experiment_ids[2]) + int(args.experiment_ids[2])) # normalize_D_and_weights logger.info('Loading normalize_D_and_weights experiment scores...') _, _, normalize_D_and_weights_test_scores, _, normalize_D_and_weights_experiment_score_metric = \ extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, - args.experiment_ids[3]) + int(args.experiment_ids[3])) # Sanity check on the metrics retreived if not (no_normalization_experiment_score_metric == normalize_D_experiment_score_metric @@ -290,21 +291,21 @@ if __name__ == "__main__": train_dev_subset_train_scores, train_dev_subset_dev_scores, train_dev_subset_test_scores, \ extracted_forest_sizes, train_dev_subset_experiment_score_metric = \ extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, - args.experiment_ids[0]) + int(args.experiment_ids[0])) # train-dev_train-dev_subset logger.info('Loading train-dev_train-dev_subset experiment scores...') train_dev_train_dev_subset_train_scores, train_dev_train_dev_subset_dev_scores, train_dev_train_dev_subset_test_scores, \ _, train_dev_train_dev_subset_experiment_score_metric = \ extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, - args.experiment_ids[1]) + int(args.experiment_ids[1])) # train-train-dev_subset logger.info('Loading train-train-dev_subset experiment scores...') train_train_dev_subset_train_scores, train_train_dev_subset_dev_scores, train_train_dev_subset_test_scores, \ _, train_train_dev_subset_experiment_score_metric = \ extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, - args.experiment_ids[2]) + int(args.experiment_ids[2])) # Sanity check on the metrics retreived if not (train_dev_subset_experiment_score_metric == train_dev_train_dev_subset_experiment_score_metric @@ -349,13 +350,13 @@ if __name__ == "__main__": logger.info('Loading base_with_params experiment scores...') base_with_params_train_scores, base_with_params_dev_scores, base_with_params_test_scores, \ base_with_params_experiment_score_metric = \ - extract_scores_across_seeds_and_forest_size(args.models_dir, args.results_dir, args.experiment_ids[0], + extract_scores_across_seeds_and_forest_size(args.models_dir, args.results_dir, int(args.experiment_ids[0]), extracted_forest_sizes_number) # random_with_params logger.info('Loading random_with_params experiment scores...') random_with_params_train_scores, random_with_params_dev_scores, random_with_params_test_scores, \ with_params_extracted_forest_sizes, random_with_params_experiment_score_metric = \ - extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, args.experiment_ids[1]) + extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, int(args.experiment_ids[1])) # omp_with_params logger.info('Loading omp_with_params experiment scores...') """omp_with_params_train_scores, omp_with_params_dev_scores, omp_with_params_test_scores, _, \ @@ -363,12 +364,12 @@ if __name__ == "__main__": args.models_dir, args.results_dir, args.experiment_ids[2])""" omp_with_params_train_scores, omp_with_params_dev_scores, omp_with_params_test_scores, _, \ omp_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( - args.models_dir, args.results_dir, args.experiment_ids[2]) + args.models_dir, args.results_dir, int(args.experiment_ids[2])) #omp_with_params_without_weights logger.info('Loading omp_with_params experiment scores...') omp_with_params_without_weights_train_scores, omp_with_params_without_weights_dev_scores, omp_with_params_without_weights_test_scores, _, \ omp_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( - args.models_dir, args.results_dir, args.experiment_ids[2], weights=False) + args.models_dir, args.results_dir, int(args.experiment_ids[2]), weights=False) """# base_with_params logger.info('Loading base_with_params experiment scores 2...') @@ -402,57 +403,63 @@ if __name__ == "__main__": title='Loss values of {}\nusing best params of previous stages'.format(args.dataset_name)) elif args.stage == 5: # Retreive the extracted forest sizes number used in order to have a base forest axis as long as necessary - extracted_forest_sizes_number = retreive_extracted_forest_sizes_number(args.models_dir, args.experiment_ids[1]) + extracted_forest_sizes_number = retreive_extracted_forest_sizes_number(args.models_dir, int(args.experiment_ids[1])) + all_labels = list() + all_scores = list() # base_with_params logger.info('Loading base_with_params experiment scores...') base_with_params_train_scores, base_with_params_dev_scores, base_with_params_test_scores, \ base_with_params_experiment_score_metric = \ - extract_scores_across_seeds_and_forest_size(args.models_dir, args.results_dir, args.experiment_ids[0], + extract_scores_across_seeds_and_forest_size(args.models_dir, args.results_dir, int(args.experiment_ids[0]), extracted_forest_sizes_number) # random_with_params logger.info('Loading random_with_params experiment scores...') random_with_params_train_scores, random_with_params_dev_scores, random_with_params_test_scores, \ with_params_extracted_forest_sizes, random_with_params_experiment_score_metric = \ - extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, args.experiment_ids[1]) + extract_scores_across_seeds_and_extracted_forest_sizes(args.models_dir, args.results_dir, int(args.experiment_ids[1])) # omp_with_params logger.info('Loading omp_with_params experiment scores...') omp_with_params_train_scores, omp_with_params_dev_scores, omp_with_params_test_scores, _, \ omp_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( - args.models_dir, args.results_dir, args.experiment_ids[2]) + args.models_dir, args.results_dir, int(args.experiment_ids[2])) #omp_with_params_without_weights logger.info('Loading omp_with_params experiment scores...') omp_with_params_without_weights_train_scores, omp_with_params_without_weights_dev_scores, omp_with_params_without_weights_test_scores, _, \ omp_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( - args.models_dir, args.results_dir, args.experiment_ids[2], weights=False) - # kmeans_with_params - logger.info('Loading kmeans_with_params experiment scores...') - kmeans_with_params_train_scores, kmeans_with_params_dev_scores, kmeans_with_params_test_scores, _, \ - kmeans_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( - args.models_dir, args.results_dir, args.experiment_ids[3]) - # similarity_with_params - logger.info('Loading similarity_with_params experiment scores...') - similarity_with_params_train_scores, similarity_with_params_dev_scores, similarity_with_params_test_scores, _, \ - similarity_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( - args.models_dir, args.results_dir, args.experiment_ids[4]) + args.models_dir, args.results_dir, int(args.experiment_ids[2]), weights=False) + + all_labels = ['base', 'random', 'omp', 'omp_without_weights'] + all_scores = [base_with_params_test_scores, random_with_params_test_scores, omp_with_params_test_scores, + omp_with_params_without_weights_test_scores] + + for i in range(3, len(args.experiment_ids)): + if 'kmeans' in args.experiment_ids[i]: + label = 'kmeans' + elif 'similarity' in args.experiment_ids[i]: + label = 'similarity' + elif 'ensemble' in args.experiment_ids[i]: + label = 'ensemble' + else: + logger.error('Invalid value encountered') + continue - # Sanity check on the metrics retreived - if not (base_with_params_experiment_score_metric == random_with_params_experiment_score_metric - == omp_with_params_experiment_score_metric == kmeans_with_params_experiment_score_metric): - raise ValueError('Score metrics of all experiments must be the same.') - experiments_score_metric = base_with_params_experiment_score_metric + logger.info(f'Loading {label} experiment scores...') + _, _, current_test_scores, _, _ = extract_scores_across_seeds_and_extracted_forest_sizes( + args.models_dir, args.results_dir, int(args.experiment_ids[i].split('=')[1])) + all_labels.append(label) + all_scores.append(current_test_scores) output_path = os.path.join(args.results_dir, args.dataset_name, 'stage5') pathlib.Path(output_path).mkdir(parents=True, exist_ok=True) Plotter.plot_stage2_losses( - file_path=output_path + os.sep + 'losses.png', - all_experiment_scores=[base_with_params_test_scores, random_with_params_test_scores, omp_with_params_test_scores, - omp_with_params_without_weights_test_scores, kmeans_with_params_test_scores, similarity_with_params_test_scores], - all_labels=['base', 'random', 'omp', 'omp_without_weights', 'kmeans', 'similarity'], + file_path=output_path + os.sep + f"losses_{'-'.join(all_labels)}.png", + all_experiment_scores=all_scores, + all_labels=all_labels, x_value=with_params_extracted_forest_sizes, xlabel='Number of trees extracted', - ylabel=experiments_score_metric, + ylabel=base_with_params_experiment_score_metric, title='Loss values of {}\nusing best params of previous stages'.format(args.dataset_name)) else: raise ValueError('This stage number is not supported yet, but it will be!') diff --git a/code/train.py b/code/train.py index 1d75e98..b7ea2a7 100644 --- a/code/train.py +++ b/code/train.py @@ -2,6 +2,7 @@ from bolsonaro.data.dataset_parameters import DatasetParameters from bolsonaro.data.dataset_loader import DatasetLoader from bolsonaro.models.model_factory import ModelFactory from bolsonaro.models.model_parameters import ModelParameters +from bolsonaro.models.ensemble_selection_forest_regressor import EnsembleSelectionForestRegressor from bolsonaro.trainer import Trainer from bolsonaro.utils import resolve_experiment_id, tqdm_joblib from bolsonaro import LOG_PATH @@ -53,10 +54,15 @@ def seed_job(seed_job_pb, seed, parameters, experiment_id, hyperparameters, verb trainer = Trainer(dataset) + if parameters['extraction_strategy'] == 'ensemble': + library = EnsembleSelectionForestRegressor.generate_library(dataset.X_train, dataset.y_train, random_state=seed) + else: + library = None + if parameters['extraction_strategy'] != 'none': with tqdm_joblib(tqdm(total=len(parameters['extracted_forest_size']), disable=not verbose)) as extracted_forest_size_job_pb: Parallel(n_jobs=-1)(delayed(extracted_forest_size_job)(extracted_forest_size_job_pb, parameters['extracted_forest_size'][i], - models_dir, seed, parameters, dataset, hyperparameters, experiment_id, trainer) + models_dir, seed, parameters, dataset, hyperparameters, experiment_id, trainer, library) for i in range(len(parameters['extracted_forest_size']))) else: forest_size = hyperparameters['n_estimators'] @@ -88,7 +94,7 @@ def seed_job(seed_job_pb, seed, parameters, experiment_id, hyperparameters, verb ) model_parameters.save(sub_models_dir, experiment_id) - model = ModelFactory.build(dataset.task, model_parameters) + model = ModelFactory.build(dataset.task, model_parameters, library=library) trainer.init(model, subsets_used=parameters['subsets_used']) trainer.train(model) @@ -97,7 +103,7 @@ def seed_job(seed_job_pb, seed, parameters, experiment_id, hyperparameters, verb seed_job_pb.update(1) def extracted_forest_size_job(extracted_forest_size_job_pb, extracted_forest_size, models_dir, - seed, parameters, dataset, hyperparameters, experiment_id, trainer): + seed, parameters, dataset, hyperparameters, experiment_id, trainer, library): logger = LoggerFactory.create(LOG_PATH, 'training_seed{}_extracted_forest_size{}_ti{}'.format( seed, extracted_forest_size, threading.get_ident())) @@ -132,7 +138,7 @@ def extracted_forest_size_job(extracted_forest_size_job_pb, extracted_forest_siz ) model_parameters.save(sub_models_dir, experiment_id) - model = ModelFactory.build(dataset.task, model_parameters) + model = ModelFactory.build(dataset.task, model_parameters, library=library) trainer.init(model, subsets_used=parameters['subsets_used']) trainer.train(model) @@ -202,7 +208,7 @@ if __name__ == "__main__": parser.add_argument('--skip_best_hyperparams', action='store_true', default=DEFAULT_SKIP_BEST_HYPERPARAMS, help='Do not use the best hyperparameters if there exist.') parser.add_argument('--save_experiment_configuration', nargs='+', default=None, help='Save the experiment parameters specified in the command line in a file. Args: {{stage_num}} {{name}}') parser.add_argument('--job_number', nargs='?', type=int, default=DEFAULT_JOB_NUMBER, help='Specify the number of job used during the parallelisation across seeds.') - parser.add_argument('--extraction_strategy', nargs='?', type=str, default=DEFAULT_EXTRACTION_STRATEGY, help='Specify the strategy to apply to extract the trees from the forest. Either omp, random, none, similarity, kmeans.') + parser.add_argument('--extraction_strategy', nargs='?', type=str, default=DEFAULT_EXTRACTION_STRATEGY, help='Specify the strategy to apply to extract the trees from the forest. Either omp, random, none, similarity, kmeans, ensemble.') parser.add_argument('--overwrite', action='store_true', default=DEFAULT_OVERWRITE, help='Overwrite the experiment id') args = parser.parse_args() @@ -213,7 +219,7 @@ if __name__ == "__main__": else: parameters = args.__dict__ - if parameters['extraction_strategy'] not in ['omp', 'random', 'none', 'similarity', 'kmeans']: + if parameters['extraction_strategy'] not in ['omp', 'random', 'none', 'similarity', 'kmeans', 'ensemble']: raise ValueError('Specified extraction strategy {} is not supported.'.format(parameters.extraction_strategy)) pathlib.Path(parameters['models_dir']).mkdir(parents=True, exist_ok=True) diff --git a/scripts/run_stage5_experiments_ensemble.sh b/scripts/run_stage5_experiments_ensemble.sh new file mode 100755 index 0000000..7387a97 --- /dev/null +++ b/scripts/run_stage5_experiments_ensemble.sh @@ -0,0 +1,12 @@ +#!/bin/bash +core_number=1 +walltime=5:00 +seeds='1 2 3' + +for dataset in california_housing # kin8nm kr-vs-kp spambase steel-plates diabetes diamonds boston california_housing +do + #oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=none --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=1 --models_dir=models/$dataset/stage5_ensemble --subsets_used train+dev,train+dev" + #oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=random --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=2 --models_dir=models/$dataset/stage5_ensemble --subsets_used train+dev,train+dev" + #oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=omp --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=3 --models_dir=models/$dataset/stage5_ensemble --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=ensemble --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=4 --models_dir=models/$dataset/stage5_ensemble --subsets_used train+dev,train+dev" +done -- GitLab From bf240b77f2f4698e77f958ba8f4ab2cc71164bd7 Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 09:01:30 +0100 Subject: [PATCH 07/18] Add missing self in ensemble_selection_forest_regressor --- code/bolsonaro/models/ensemble_selection_forest_regressor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/bolsonaro/models/ensemble_selection_forest_regressor.py b/code/bolsonaro/models/ensemble_selection_forest_regressor.py index a20d8ec..50c1dc8 100644 --- a/code/bolsonaro/models/ensemble_selection_forest_regressor.py +++ b/code/bolsonaro/models/ensemble_selection_forest_regressor.py @@ -31,7 +31,7 @@ class EnsembleSelectionForestRegressor(BaseEstimator, metaclass=ABCMeta): val_score = self._score_metric(estimator.predict(X_val), y_val) scores_list.append(val_score) - class_list = list(library) + class_list = list(self._library) m = np.argmax(np.asarray(scores_list)) self._ensemble_selected = [class_list[m]] temp_pred = class_list[m].predict(X_val) -- GitLab From 86c4cf105924e66286e0de936c8e7f27edc9c327 Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 09:04:28 +0100 Subject: [PATCH 08/18] Fix wrong variable name in ensemble_selection_forest_regressor --- code/bolsonaro/models/ensemble_selection_forest_regressor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/bolsonaro/models/ensemble_selection_forest_regressor.py b/code/bolsonaro/models/ensemble_selection_forest_regressor.py index 50c1dc8..1e63c8c 100644 --- a/code/bolsonaro/models/ensemble_selection_forest_regressor.py +++ b/code/bolsonaro/models/ensemble_selection_forest_regressor.py @@ -45,7 +45,7 @@ class EnsembleSelectionForestRegressor(BaseEstimator, metaclass=ABCMeta): temp_score = self._score_metric(temp_mean, y_val) if (temp_score < best_score): candidate_index = j - best_score = tmp_score + best_score = temp_score temp_pred = np.delete(temp_pred, -1, 0) self._ensemble_selected.append(class_list[candidate_index]) temp_pred = np.vstack((temp_pred, class_list[candidate_index].predict(X_val))) -- GitLab From af068a00d443ee1ecd5f7e00f8d93e404aaf1bc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Bouscarrat?= Date: Fri, 6 Mar 2020 10:49:58 +0100 Subject: [PATCH 09/18] Better to take non zero values of list as indicated in the numpy doc --- code/bolsonaro/models/omp_forest.py | 7 ++----- code/bolsonaro/models/omp_forest_classifier.py | 4 +--- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/code/bolsonaro/models/omp_forest.py b/code/bolsonaro/models/omp_forest.py index 5b947d3..35c2f8f 100644 --- a/code/bolsonaro/models/omp_forest.py +++ b/code/bolsonaro/models/omp_forest.py @@ -136,14 +136,11 @@ class SingleOmpForest(OmpForest): :param X: a Forest :return: a np.array of the predictions of the entire forest """ - forest_predictions = self._base_estimator_predictions(X).T + forest_predictions = np.array([tree.predict(X) for tree in self._base_forest_estimator.estimators_]) if self._models_parameters.normalize_D: forest_predictions /= self._forest_norms weights = self._omp.coef_ - omp_trees_indices = np.nonzero(weights)[0] - - select_trees = np.mean(forest_predictions[omp_trees_indices], axis=0) - print(len(omp_trees_indices)) + select_trees = np.mean(forest_predictions[weights != 0], axis=0) return select_trees diff --git a/code/bolsonaro/models/omp_forest_classifier.py b/code/bolsonaro/models/omp_forest_classifier.py index a51405a..3051fad 100644 --- a/code/bolsonaro/models/omp_forest_classifier.py +++ b/code/bolsonaro/models/omp_forest_classifier.py @@ -40,9 +40,7 @@ class OmpForestBinaryClassifier(SingleOmpForest): forest_predictions /= self._forest_norms weights = self._omp.coef_ - omp_trees_indices = np.nonzero(weights) - - omp_trees_predictions = forest_predictions[omp_trees_indices].T[1] + omp_trees_predictions = forest_predictions[weights != 0].T[1] # Here forest_pred is the probability of being class 1. -- GitLab From 8d911afd83a99a7869aef2eb88a3fd7cc4e6a54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Bouscarrat?= Date: Fri, 6 Mar 2020 11:25:55 +0100 Subject: [PATCH 10/18] Add log to find no_weight bug --- code/bolsonaro/models/omp_forest.py | 2 +- code/compute_results.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/bolsonaro/models/omp_forest.py b/code/bolsonaro/models/omp_forest.py index 35c2f8f..68b3947 100644 --- a/code/bolsonaro/models/omp_forest.py +++ b/code/bolsonaro/models/omp_forest.py @@ -134,7 +134,7 @@ class SingleOmpForest(OmpForest): Make all the base tree predictions :param X: a Forest - :return: a np.array of the predictions of the entire forest + :return: a np.array of the predictions of the trees selected by OMP without applyong the weight """ forest_predictions = np.array([tree.predict(X) for tree in self._base_forest_estimator.estimators_]) diff --git a/code/compute_results.py b/code/compute_results.py index 5f7fac2..4ad3686 100644 --- a/code/compute_results.py +++ b/code/compute_results.py @@ -365,10 +365,12 @@ if __name__ == "__main__": omp_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( args.models_dir, args.results_dir, args.experiment_ids[2]) #omp_with_params_without_weights - logger.info('Loading omp_with_params experiment scores...') + logger.info('Loading omp_no_weights experiment scores...') omp_with_params_without_weights_train_scores, omp_with_params_without_weights_dev_scores, omp_with_params_without_weights_test_scores, _, \ omp_with_params_experiment_score_metric = extract_scores_across_seeds_and_extracted_forest_sizes( args.models_dir, args.results_dir, args.experiment_ids[2], weights=False) + + print(omp_with_params_without_weights_test_scores) """# base_with_params logger.info('Loading base_with_params experiment scores 2...') -- GitLab From 3507558edb01856abc047b346c453dfc5adc5cec Mon Sep 17 00:00:00 2001 From: "leo.bouscarrat" Date: Fri, 6 Mar 2020 11:46:46 +0100 Subject: [PATCH 11/18] Results for California --- experiments/california_housing/stage4/none_with_params.json | 1 + experiments/california_housing/stage4/omp_with_params.json | 1 + .../california_housing/stage4/random_with_params.json | 1 + scripts/run_stage4_experiments.sh | 6 +++--- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/experiments/california_housing/stage4/none_with_params.json b/experiments/california_housing/stage4/none_with_params.json index e3549c1..0f7a4a8 100644 --- a/experiments/california_housing/stage4/none_with_params.json +++ b/experiments/california_housing/stage4/none_with_params.json @@ -31,6 +31,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": false, "extracted_forest_size": [ 33, 67, diff --git a/experiments/california_housing/stage4/omp_with_params.json b/experiments/california_housing/stage4/omp_with_params.json index e01103a..6397f82 100644 --- a/experiments/california_housing/stage4/omp_with_params.json +++ b/experiments/california_housing/stage4/omp_with_params.json @@ -31,6 +31,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": false, "extracted_forest_size": [ 33, 67, diff --git a/experiments/california_housing/stage4/random_with_params.json b/experiments/california_housing/stage4/random_with_params.json index 85dbd63..7859fc5 100644 --- a/experiments/california_housing/stage4/random_with_params.json +++ b/experiments/california_housing/stage4/random_with_params.json @@ -31,6 +31,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": false, "extracted_forest_size": [ 33, 67, diff --git a/scripts/run_stage4_experiments.sh b/scripts/run_stage4_experiments.sh index 71987fb..cc414f9 100644 --- a/scripts/run_stage4_experiments.sh +++ b/scripts/run_stage4_experiments.sh @@ -8,7 +8,7 @@ for dataset in california_housing #for dataset in gamma #for dataset in breast_cancer diabetes diamonds california_housing boston linnerud steel-plates kr-vs-kp digits iris kin8nm lfw_pairs linnerud olivetti_faces wine spambase gamma do - oarsub -p "(gpu is null)" -l /core=$core_number,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=none --save_experiment_configuration 4 none_with_params --extracted_forest_size_stop=1 --extracted_forest_size_samples=30 --experiment_id=1 --models_dir=models/$dataset/stage4 --subsets_used train+dev,train+dev" - oarsub -p "(gpu is null)" -l /core=$core_number,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=random --save_experiment_configuration 4 random_with_params --extracted_forest_size_stop=1 --extracted_forest_size_samples=30 --experiment_id=2 --models_dir=models/$dataset/stage4 --subsets_used train+dev,train+dev" - oarsub -p "(gpu is null)" -l /core=$core_number,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=omp --save_experiment_configuration 4 omp_with_params --extracted_forest_size_stop=1 --extracted_forest_size_samples=30 --experiment_id=3 --models_dir=models/$dataset/stage4 --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -n "$dataset base" -l /core=$core_number,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=none --save_experiment_configuration 4 none_with_params --extracted_forest_size_stop=1 --extracted_forest_size_samples=30 --experiment_id=1 --models_dir=models/$dataset/stage4 --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -n "$dataset random" -l /core=$core_number,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=random --save_experiment_configuration 4 random_with_params --extracted_forest_size_stop=1 --extracted_forest_size_samples=30 --experiment_id=2 --models_dir=models/$dataset/stage4 --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -n "$dataset omp" -l /core=$core_number,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=omp --save_experiment_configuration 4 omp_with_params --extracted_forest_size_stop=1 --extracted_forest_size_samples=30 --experiment_id=3 --models_dir=models/$dataset/stage4 --subsets_used train+dev,train+dev" done -- GitLab From 2a265135553fe6fbe38dfae9a1c9dd861ce468ae Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 16:50:16 +0100 Subject: [PATCH 12/18] Fix hyperparams bugs in base and random. Fix extracted forest size used in random. Factorize random fitting --- .../ensemble_selection_forest_regressor.py | 6 +-- code/bolsonaro/models/model_factory.py | 12 ++--- code/bolsonaro/models/omp_forest.py | 1 - code/bolsonaro/trainer.py | 18 ++++--- code/train.py | 50 +++++++++++++------ 5 files changed, 55 insertions(+), 32 deletions(-) diff --git a/code/bolsonaro/models/ensemble_selection_forest_regressor.py b/code/bolsonaro/models/ensemble_selection_forest_regressor.py index 1e63c8c..b82e131 100644 --- a/code/bolsonaro/models/ensemble_selection_forest_regressor.py +++ b/code/bolsonaro/models/ensemble_selection_forest_regressor.py @@ -53,14 +53,14 @@ class EnsembleSelectionForestRegressor(BaseEstimator, metaclass=ABCMeta): def score(self, X, y): predictions = self._predict_base_estimator(X) - mean_predictions = np.mean(predictions, axis=0) - return self._score_metric(mean_predictions, y) + return self._score_metric(predictions, y) def predict_base_estimator(self, X): predictions = list() for tree in self._ensemble_selected: predictions.append(tree.predict(X)) - return np.array(predictions) + mean_predictions = np.mean(np.array(predictions), axis=0) + return mean_predictions @staticmethod def generate_library(X_train, y_train, random_state=None): diff --git a/code/bolsonaro/models/model_factory.py b/code/bolsonaro/models/model_factory.py index eb3e8b5..335816b 100644 --- a/code/bolsonaro/models/model_factory.py +++ b/code/bolsonaro/models/model_factory.py @@ -22,10 +22,10 @@ class ModelFactory(object): if model_parameters.extraction_strategy == 'omp': return OmpForestBinaryClassifier(model_parameters) elif model_parameters.extraction_strategy == 'random': - return RandomForestClassifier(n_estimators=model_parameters.extracted_forest_size, + return RandomForestClassifier(**model_parameters.hyperparameters, random_state=model_parameters.seed) elif model_parameters.extraction_strategy == 'none': - return RandomForestClassifier(n_estimators=model_parameters.hyperparameters['n_estimators'], + return RandomForestClassifier(**model_parameters.hyperparameters, random_state=model_parameters.seed) else: raise ValueError('Invalid extraction strategy') @@ -33,7 +33,7 @@ class ModelFactory(object): if model_parameters.extraction_strategy == 'omp': return OmpForestRegressor(model_parameters) elif model_parameters.extraction_strategy == 'random': - return RandomForestRegressor(n_estimators=model_parameters.extracted_forest_size, + return RandomForestRegressor(**model_parameters.hyperparameters, random_state=model_parameters.seed) elif model_parameters.extraction_strategy == 'similarity': return SimilarityForestRegressor(model_parameters) @@ -42,7 +42,7 @@ class ModelFactory(object): elif model_parameters.extraction_strategy == 'ensemble': return EnsembleSelectionForestRegressor(model_parameters, library=library) elif model_parameters.extraction_strategy == 'none': - return RandomForestRegressor(n_estimators=model_parameters.hyperparameters['n_estimators'], + return RandomForestRegressor(**model_parameters.hyperparameters, random_state=model_parameters.seed) else: raise ValueError('Invalid extraction strategy') @@ -50,10 +50,10 @@ class ModelFactory(object): if model_parameters.extraction_strategy == 'omp': return OmpForestMulticlassClassifier(model_parameters) elif model_parameters.extraction_strategy == 'random': - return RandomForestClassifier(n_estimators=model_parameters.extracted_forest_size, + return RandomForestClassifier(**model_parameters.hyperparameters, random_state=model_parameters.seed) elif model_parameters.extraction_strategy == 'none': - return RandomForestClassifier(n_estimators=model_parameters.hyperparameters['n_estimators'], + return RandomForestClassifier(**model_parameters.hyperparameters, random_state=model_parameters.seed) else: raise ValueError('Invalid extraction strategy') diff --git a/code/bolsonaro/models/omp_forest.py b/code/bolsonaro/models/omp_forest.py index 5b947d3..e4a5667 100644 --- a/code/bolsonaro/models/omp_forest.py +++ b/code/bolsonaro/models/omp_forest.py @@ -145,5 +145,4 @@ class SingleOmpForest(OmpForest): omp_trees_indices = np.nonzero(weights)[0] select_trees = np.mean(forest_predictions[omp_trees_indices], axis=0) - print(len(omp_trees_indices)) return select_trees diff --git a/code/bolsonaro/trainer.py b/code/bolsonaro/trainer.py index 6ec3909..ebcfe80 100644 --- a/code/bolsonaro/trainer.py +++ b/code/bolsonaro/trainer.py @@ -3,6 +3,7 @@ from bolsonaro.models.omp_forest_regressor import OmpForestRegressor from bolsonaro.models.omp_forest_classifier import OmpForestBinaryClassifier, OmpForestMulticlassClassifier from bolsonaro.models.similarity_forest_regressor import SimilarityForestRegressor from bolsonaro.models.kmeans_forest_regressor import KMeansForestRegressor +from bolsonaro.models.ensemble_selection_forest_regressor import EnsembleSelectionForestRegressor from bolsonaro.error_handling.logger_factory import LoggerFactory from bolsonaro.data.task import Task from . import LOG_PATH @@ -73,7 +74,7 @@ class Trainer(object): else: raise ValueError("Unknown specified subsets_used parameter '{}'".format(model.models_parameters.subsets_used)) - def train(self, model): + def train(self, model, extracted_forest_size=None): """ :param model: An instance of either RandomForestRegressor, RandomForestClassifier, OmpForestRegressor, OmpForestBinaryClassifier, OmpForestMulticlassClassifier. @@ -83,10 +84,13 @@ class Trainer(object): self._logger.debug('Training model using train set...') self._begin_time = time.time() if type(model) in [RandomForestRegressor, RandomForestClassifier]: - model.fit( - X=self._X_forest, - y=self._y_forest - ) + if extracted_forest_size is not None: + model.estimators_ = np.random.choice(model.estimators_, extracted_forest_size) + else: + model.fit( + X=self._X_forest, + y=self._y_forest + ) else: model.fit( self._X_forest, @@ -112,12 +116,12 @@ class Trainer(object): y_pred = np.sign(y_pred) y_pred = np.where(y_pred == 0, 1, y_pred) result = self._classification_score_metric(y_true, y_pred) - elif type(model) in [SimilarityForestRegressor, KMeansForestRegressor]: + elif type(model) in [SimilarityForestRegressor, KMeansForestRegressor, EnsembleSelectionForestRegressor]: result = model.score(X, y_true) return result def __score_func_base(self, model, X, y_true): - if type(model) in [OmpForestRegressor, SimilarityForestRegressor, KMeansForestRegressor]: + if type(model) in [OmpForestRegressor, SimilarityForestRegressor, KMeansForestRegressor, EnsembleSelectionForestRegressor]: y_pred = model.predict_base_estimator(X) result = self._base_regression_score_metric(y_true, y_pred) elif type(model) in [OmpForestBinaryClassifier, OmpForestMulticlassClassifier]: diff --git a/code/train.py b/code/train.py index b7ea2a7..72c91d8 100644 --- a/code/train.py +++ b/code/train.py @@ -59,10 +59,26 @@ def seed_job(seed_job_pb, seed, parameters, experiment_id, hyperparameters, verb else: library = None + if parameters['extraction_strategy'] == 'random': + pretrained_model_parameters = ModelParameters( + extracted_forest_size=parameters['forest_size'], + normalize_D=parameters['normalize_D'], + subsets_used=parameters['subsets_used'], + normalize_weights=parameters['normalize_weights'], + seed=seed, + hyperparameters=hyperparameters, + extraction_strategy=parameters['extraction_strategy'] + ) + pretrained_estimator = ModelFactory.build(dataset.task, pretrained_model_parameters, library=library) + else: + pretrained_estimator = None + pretrained_model_parameters = None + if parameters['extraction_strategy'] != 'none': with tqdm_joblib(tqdm(total=len(parameters['extracted_forest_size']), disable=not verbose)) as extracted_forest_size_job_pb: Parallel(n_jobs=-1)(delayed(extracted_forest_size_job)(extracted_forest_size_job_pb, parameters['extracted_forest_size'][i], - models_dir, seed, parameters, dataset, hyperparameters, experiment_id, trainer, library) + models_dir, seed, parameters, dataset, hyperparameters, experiment_id, trainer, library, + pretrained_estimator=pretrained_estimator, pretrained_model_parameters=pretrained_model_parameters) for i in range(len(parameters['extracted_forest_size']))) else: forest_size = hyperparameters['n_estimators'] @@ -103,7 +119,8 @@ def seed_job(seed_job_pb, seed, parameters, experiment_id, hyperparameters, verb seed_job_pb.update(1) def extracted_forest_size_job(extracted_forest_size_job_pb, extracted_forest_size, models_dir, - seed, parameters, dataset, hyperparameters, experiment_id, trainer, library): + seed, parameters, dataset, hyperparameters, experiment_id, trainer, library, + pretrained_estimator=None, pretrained_model_parameters=None): logger = LoggerFactory.create(LOG_PATH, 'training_seed{}_extracted_forest_size{}_ti{}'.format( seed, extracted_forest_size, threading.get_ident())) @@ -127,21 +144,24 @@ def extracted_forest_size_job(extracted_forest_size_job_pb, extracted_forest_siz pathlib.Path(sub_models_dir).mkdir(parents=True, exist_ok=True) - model_parameters = ModelParameters( - extracted_forest_size=extracted_forest_size, - normalize_D=parameters['normalize_D'], - subsets_used=parameters['subsets_used'], - normalize_weights=parameters['normalize_weights'], - seed=seed, - hyperparameters=hyperparameters, - extraction_strategy=parameters['extraction_strategy'] - ) - model_parameters.save(sub_models_dir, experiment_id) - - model = ModelFactory.build(dataset.task, model_parameters, library=library) + if not pretrained_estimator: + model_parameters = ModelParameters( + extracted_forest_size=extracted_forest_size, + normalize_D=parameters['normalize_D'], + subsets_used=parameters['subsets_used'], + normalize_weights=parameters['normalize_weights'], + seed=seed, + hyperparameters=hyperparameters, + extraction_strategy=parameters['extraction_strategy'] + ) + model_parameters.save(sub_models_dir, experiment_id) + model = ModelFactory.build(dataset.task, model_parameters, library=library) + else: + model = pretrained_estimator + pretrained_model_parameters.save(sub_models_dir, experiment_id) trainer.init(model, subsets_used=parameters['subsets_used']) - trainer.train(model) + trainer.train(model, extracted_forest_size=extracted_forest_size) trainer.compute_results(model, sub_models_dir) """ -- GitLab From 731cee0a049298d2c9e1dda48ca40c70f1a4a43b Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 16:50:56 +0100 Subject: [PATCH 13/18] Add stage5 experiments script --- run_stage5_experiments.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100755 run_stage5_experiments.sh diff --git a/run_stage5_experiments.sh b/run_stage5_experiments.sh new file mode 100755 index 0000000..a28cdf0 --- /dev/null +++ b/run_stage5_experiments.sh @@ -0,0 +1,14 @@ +#!/bin/bash +core_number=1 +walltime=5:00 +seeds='1 2 3' + +for dataset in kin8nm kr-vs-kp spambase steel-plates diabetes diamonds boston california_housing +do + #oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=none --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=1 --models_dir=models/$dataset/stage5 --subsets_used train+dev,train+dev" + #oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=random --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=2 --models_dir=models/$dataset/stage5 --subsets_used train+dev,train+dev" + #oarsub -p "(gpu is null)" -l /core=5,walltime=1:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=omp --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=3 --models_dir=models/$dataset/stage5 --subsets_used train+dev,train+dev" + oarsub -p "(gpu is null)" -l /core=50,walltime=5:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=similarity --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=4 --models_dir=models/$dataset/stage5 --subsets_used train+dev,train+dev" + #oarsub -p "(gpu is null)" -l /core=50,walltime=5:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=kmeans --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=5 --models_dir=models/$dataset/stage5 --subsets_used train+dev,train+dev" + #oarsub -p "(gpu is null)" -l /core=50,walltime=5:00 "conda activate test_env && python code/train.py --dataset_name=$dataset --seeds $seeds --extraction_strategy=ensemble --extracted_forest_size_stop=0.40 --extracted_forest_size_samples=30 --experiment_id=6 --models_dir=models/$dataset/stage5 --subsets_used train+dev,train+dev" +done -- GitLab From a955fda648d871693d70f3e4c5d2175ab0cc7fd8 Mon Sep 17 00:00:00 2001 From: "leo.bouscarrat" Date: Fri, 6 Mar 2020 17:11:39 +0100 Subject: [PATCH 14/18] Adding kin8nm optimal hyperparameters --- experiments/kin8nm/stage1/params.json | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 experiments/kin8nm/stage1/params.json diff --git a/experiments/kin8nm/stage1/params.json b/experiments/kin8nm/stage1/params.json new file mode 100644 index 0000000..aff3e00 --- /dev/null +++ b/experiments/kin8nm/stage1/params.json @@ -0,0 +1,28 @@ +{ + "scorer": "neg_mean_squared_error", + "best_score_train": -0.022941874369141916, + "best_score_test": -0.020444215502079355, + "best_parameters": { + "min_samples_leaf": 1, + "n_estimators": 1000, + "max_depth": 20, + "max_features": "auto" + }, + "random_seed": [ + 486, + 138, + 137, + 54, + 1132, + 1528, + 1857, + 1528, + 13, + 1826, + 647, + 1704, + 469, + 101, + 804 + ] +} \ No newline at end of file -- GitLab From 138660cb2d778cdb41029fc77a3e7d7c8a29bf35 Mon Sep 17 00:00:00 2001 From: Charly Lamothe Date: Fri, 6 Mar 2020 17:17:22 +0100 Subject: [PATCH 15/18] Update fix random strategy (wip --- code/train.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/train.py b/code/train.py index 72c91d8..e70902b 100644 --- a/code/train.py +++ b/code/train.py @@ -70,6 +70,12 @@ def seed_job(seed_job_pb, seed, parameters, experiment_id, hyperparameters, verb extraction_strategy=parameters['extraction_strategy'] ) pretrained_estimator = ModelFactory.build(dataset.task, pretrained_model_parameters, library=library) + pretraned_trainer = Trainer(dataset) + pretraned_trainer.init(pretrained_estimator, subsets_used=parameters['subsets_used']) + pretrained_estimator.fit( + X=pretraned_trainer._X_forest, + y=pretraned_trainer._y_forest + ) else: pretrained_estimator = None pretrained_model_parameters = None -- GitLab From 6483c0dcf19a50cae810974ec537f88ac2f6fda6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Bouscarrat?= Date: Fri, 6 Mar 2020 18:27:32 +0100 Subject: [PATCH 16/18] Correction on random extraction --- code/bolsonaro/trainer.py | 6 ++++-- code/train.py | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/code/bolsonaro/trainer.py b/code/bolsonaro/trainer.py index ebcfe80..6fcf0af 100644 --- a/code/bolsonaro/trainer.py +++ b/code/bolsonaro/trainer.py @@ -80,12 +80,14 @@ class Trainer(object): OmpForestBinaryClassifier, OmpForestMulticlassClassifier. :return: """ - self._logger.debug('Training model using train set...') self._begin_time = time.time() if type(model) in [RandomForestRegressor, RandomForestClassifier]: if extracted_forest_size is not None: - model.estimators_ = np.random.choice(model.estimators_, extracted_forest_size) + estimators_index = np.arange(1000) + np.random.shuffle(estimators_index) + choosen_estimators = estimators_index[:extracted_forest_size] + model.estimators_ = np.array(model.estimators_)[choosen_estimators] else: model.fit( X=self._X_forest, diff --git a/code/train.py b/code/train.py index e70902b..8e48e14 100644 --- a/code/train.py +++ b/code/train.py @@ -10,6 +10,7 @@ from bolsonaro.error_handling.logger_factory import LoggerFactory from dotenv import find_dotenv, load_dotenv import argparse +import copy import json import pathlib import random @@ -163,7 +164,7 @@ def extracted_forest_size_job(extracted_forest_size_job_pb, extracted_forest_siz model_parameters.save(sub_models_dir, experiment_id) model = ModelFactory.build(dataset.task, model_parameters, library=library) else: - model = pretrained_estimator + model = copy.deepcopy(pretrained_estimator) pretrained_model_parameters.save(sub_models_dir, experiment_id) trainer.init(model, subsets_used=parameters['subsets_used']) -- GitLab From 802fc3228cd4912cf7f82e08accf3a76c3a9ce9f Mon Sep 17 00:00:00 2001 From: "leo.bouscarrat" Date: Fri, 6 Mar 2020 20:59:27 +0100 Subject: [PATCH 17/18] Resultfs for california --- .../stage4/none_with_params.json | 6 ++---- .../stage4/omp_with_params.json | 6 ++---- .../stage4/random_with_params.json | 6 ++---- .../california_housing/stage4_fix/losses.png | Bin 43288 -> 49286 bytes scripts/run_stage4_experiments.sh | 10 +++++----- 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/experiments/california_housing/stage4/none_with_params.json b/experiments/california_housing/stage4/none_with_params.json index 0f7a4a8..83eb6dd 100644 --- a/experiments/california_housing/stage4/none_with_params.json +++ b/experiments/california_housing/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,7 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", - "overwrite": false, + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/california_housing/stage4/omp_with_params.json b/experiments/california_housing/stage4/omp_with_params.json index 6397f82..5ae4229 100644 --- a/experiments/california_housing/stage4/omp_with_params.json +++ b/experiments/california_housing/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,7 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", - "overwrite": false, + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/california_housing/stage4/random_with_params.json b/experiments/california_housing/stage4/random_with_params.json index 7859fc5..ae6b06b 100644 --- a/experiments/california_housing/stage4/random_with_params.json +++ b/experiments/california_housing/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,7 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", - "overwrite": false, + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/results/california_housing/stage4_fix/losses.png b/results/california_housing/stage4_fix/losses.png index dccb6d4883f3f3f56ecab982cdd61451ee0d3f70..7f7d7d89864bb61384dc18c9ff97d9ebd433146c 100644 GIT binary patch literal 49286 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 h1w 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 Date: Fri, 6 Mar 2020 22:03:48 +0100 Subject: [PATCH 18/18] Some new results --- .../boston/stage4/none_with_params.json | 5 ++--- .../boston/stage4/omp_with_params.json | 5 ++--- .../boston/stage4/random_with_params.json | 5 ++--- .../stage4/none_with_params.json | 5 ++--- .../breast_cancer/stage4/omp_with_params.json | 5 ++--- .../stage4/random_with_params.json | 5 ++--- .../diabetes/stage4/none_with_params.json | 5 ++--- .../diabetes/stage4/omp_with_params.json | 5 ++--- .../diabetes/stage4/random_with_params.json | 5 ++--- .../diamonds/stage4/none_with_params.json | 5 ++--- .../diamonds/stage4/omp_with_params.json | 5 ++--- .../diamonds/stage4/random_with_params.json | 5 ++--- .../digits/stage4/none_with_params.json | 5 ++--- .../digits/stage4/omp_with_params.json | 5 ++--- .../digits/stage4/random_with_params.json | 5 ++--- experiments/iris/stage4/none_with_params.json | 5 ++--- experiments/iris/stage4/omp_with_params.json | 5 ++--- .../iris/stage4/random_with_params.json | 5 ++--- .../kin8nm/stage4/none_with_params.json | 5 ++--- .../kin8nm/stage4/omp_with_params.json | 5 ++--- .../kin8nm/stage4/random_with_params.json | 5 ++--- .../kr-vs-kp/stage4/none_with_params.json | 5 ++--- .../kr-vs-kp/stage4/omp_with_params.json | 5 ++--- .../kr-vs-kp/stage4/random_with_params.json | 5 ++--- .../stage4/none_with_params.json | 5 ++--- .../stage4/omp_with_params.json | 5 ++--- .../stage4/random_with_params.json | 5 ++--- .../steel-plates/stage4/none_with_params.json | 5 ++--- .../steel-plates/stage4/omp_with_params.json | 5 ++--- .../stage4/random_with_params.json | 5 ++--- experiments/wine/stage4/none_with_params.json | 5 ++--- experiments/wine/stage4/omp_with_params.json | 5 ++--- .../wine/stage4/random_with_params.json | 5 ++--- results/boston/stage4_fix/losses.png | Bin 35251 -> 36395 bytes results/breast_cancer/stage4_fix/losses.png | Bin 44954 -> 47337 bytes results/digits/stage4_fix/losses.png | Bin 46088 -> 50044 bytes results/iris/stage4_fix/losses.png | Bin 31888 -> 46545 bytes results/kin8nm/stage4_fix/losses.png | Bin 51664 -> 48902 bytes results/kr-vs-kp/stage4_fix/losses.png | Bin 63328 -> 66300 bytes results/olivetti_faces/stage4_fix/losses.png | Bin 33801 -> 35387 bytes results/spambase/stage4_fix/losses.png | Bin 62639 -> 65991 bytes results/steel-plates/stage4_fix/losses.png | Bin 50553 -> 55646 bytes results/wine/stage4_fix/losses.png | Bin 33965 -> 39164 bytes scripts/run_compute_results.sh | 3 ++- scripts/run_stage4_experiments.sh | 8 ++++---- 45 files changed, 72 insertions(+), 104 deletions(-) diff --git a/experiments/boston/stage4/none_with_params.json b/experiments/boston/stage4/none_with_params.json index ba056e1..b0c35cd 100644 --- a/experiments/boston/stage4/none_with_params.json +++ b/experiments/boston/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/boston/stage4/omp_with_params.json b/experiments/boston/stage4/omp_with_params.json index 0c393f6..196f035 100644 --- a/experiments/boston/stage4/omp_with_params.json +++ b/experiments/boston/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/boston/stage4/random_with_params.json b/experiments/boston/stage4/random_with_params.json index 0258396..d9c8308 100644 --- a/experiments/boston/stage4/random_with_params.json +++ b/experiments/boston/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/breast_cancer/stage4/none_with_params.json b/experiments/breast_cancer/stage4/none_with_params.json index 4b4d46e..03fb21f 100644 --- a/experiments/breast_cancer/stage4/none_with_params.json +++ b/experiments/breast_cancer/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/breast_cancer/stage4/omp_with_params.json b/experiments/breast_cancer/stage4/omp_with_params.json index 287b55e..28a56ab 100644 --- a/experiments/breast_cancer/stage4/omp_with_params.json +++ b/experiments/breast_cancer/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/breast_cancer/stage4/random_with_params.json b/experiments/breast_cancer/stage4/random_with_params.json index 34f70d8..597798d 100644 --- a/experiments/breast_cancer/stage4/random_with_params.json +++ b/experiments/breast_cancer/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/diabetes/stage4/none_with_params.json b/experiments/diabetes/stage4/none_with_params.json index 4f89e2e..fc22d56 100644 --- a/experiments/diabetes/stage4/none_with_params.json +++ b/experiments/diabetes/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 4, 7, diff --git a/experiments/diabetes/stage4/omp_with_params.json b/experiments/diabetes/stage4/omp_with_params.json index c0a85a5..1cd7c3b 100644 --- a/experiments/diabetes/stage4/omp_with_params.json +++ b/experiments/diabetes/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 4, 7, diff --git a/experiments/diabetes/stage4/random_with_params.json b/experiments/diabetes/stage4/random_with_params.json index 6684ed2..84bd44e 100644 --- a/experiments/diabetes/stage4/random_with_params.json +++ b/experiments/diabetes/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 4, 7, diff --git a/experiments/diamonds/stage4/none_with_params.json b/experiments/diamonds/stage4/none_with_params.json index fedf40d..53df012 100644 --- a/experiments/diamonds/stage4/none_with_params.json +++ b/experiments/diamonds/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 14, 29, diff --git a/experiments/diamonds/stage4/omp_with_params.json b/experiments/diamonds/stage4/omp_with_params.json index 52d8cf7..002ca26 100644 --- a/experiments/diamonds/stage4/omp_with_params.json +++ b/experiments/diamonds/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 14, 29, diff --git a/experiments/diamonds/stage4/random_with_params.json b/experiments/diamonds/stage4/random_with_params.json index 9089cbb..c83a685 100644 --- a/experiments/diamonds/stage4/random_with_params.json +++ b/experiments/diamonds/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 14, 29, diff --git a/experiments/digits/stage4/none_with_params.json b/experiments/digits/stage4/none_with_params.json index 599a191..76846a3 100644 --- a/experiments/digits/stage4/none_with_params.json +++ b/experiments/digits/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/digits/stage4/omp_with_params.json b/experiments/digits/stage4/omp_with_params.json index 45d968b..db869b3 100644 --- a/experiments/digits/stage4/omp_with_params.json +++ b/experiments/digits/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/digits/stage4/random_with_params.json b/experiments/digits/stage4/random_with_params.json index e96b311..48b67e4 100644 --- a/experiments/digits/stage4/random_with_params.json +++ b/experiments/digits/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/iris/stage4/none_with_params.json b/experiments/iris/stage4/none_with_params.json index 2df5617..fbe1024 100644 --- a/experiments/iris/stage4/none_with_params.json +++ b/experiments/iris/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/iris/stage4/omp_with_params.json b/experiments/iris/stage4/omp_with_params.json index ffddfac..ad1e343 100644 --- a/experiments/iris/stage4/omp_with_params.json +++ b/experiments/iris/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/iris/stage4/random_with_params.json b/experiments/iris/stage4/random_with_params.json index c50daa8..31acb39 100644 --- a/experiments/iris/stage4/random_with_params.json +++ b/experiments/iris/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/kin8nm/stage4/none_with_params.json b/experiments/kin8nm/stage4/none_with_params.json index 95f0f54..db480f9 100644 --- a/experiments/kin8nm/stage4/none_with_params.json +++ b/experiments/kin8nm/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/kin8nm/stage4/omp_with_params.json b/experiments/kin8nm/stage4/omp_with_params.json index 03136cb..d365b23 100644 --- a/experiments/kin8nm/stage4/omp_with_params.json +++ b/experiments/kin8nm/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/kin8nm/stage4/random_with_params.json b/experiments/kin8nm/stage4/random_with_params.json index 18a553f..1503411 100644 --- a/experiments/kin8nm/stage4/random_with_params.json +++ b/experiments/kin8nm/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/kr-vs-kp/stage4/none_with_params.json b/experiments/kr-vs-kp/stage4/none_with_params.json index cd0bbd7..c3ed6c0 100644 --- a/experiments/kr-vs-kp/stage4/none_with_params.json +++ b/experiments/kr-vs-kp/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/kr-vs-kp/stage4/omp_with_params.json b/experiments/kr-vs-kp/stage4/omp_with_params.json index ac4d8c6..1be3d0d 100644 --- a/experiments/kr-vs-kp/stage4/omp_with_params.json +++ b/experiments/kr-vs-kp/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/kr-vs-kp/stage4/random_with_params.json b/experiments/kr-vs-kp/stage4/random_with_params.json index f471871..08fec7e 100644 --- a/experiments/kr-vs-kp/stage4/random_with_params.json +++ b/experiments/kr-vs-kp/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/olivetti_faces/stage4/none_with_params.json b/experiments/olivetti_faces/stage4/none_with_params.json index 3fca3b0..e7faf2b 100644 --- a/experiments/olivetti_faces/stage4/none_with_params.json +++ b/experiments/olivetti_faces/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/olivetti_faces/stage4/omp_with_params.json b/experiments/olivetti_faces/stage4/omp_with_params.json index 136133d..7f576ff 100644 --- a/experiments/olivetti_faces/stage4/omp_with_params.json +++ b/experiments/olivetti_faces/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/olivetti_faces/stage4/random_with_params.json b/experiments/olivetti_faces/stage4/random_with_params.json index 2a2ab9a..7ced47f 100644 --- a/experiments/olivetti_faces/stage4/random_with_params.json +++ b/experiments/olivetti_faces/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/steel-plates/stage4/none_with_params.json b/experiments/steel-plates/stage4/none_with_params.json index 8f4b9a0..33db06f 100644 --- a/experiments/steel-plates/stage4/none_with_params.json +++ b/experiments/steel-plates/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/steel-plates/stage4/omp_with_params.json b/experiments/steel-plates/stage4/omp_with_params.json index ffaa72f..70882f7 100644 --- a/experiments/steel-plates/stage4/omp_with_params.json +++ b/experiments/steel-plates/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/steel-plates/stage4/random_with_params.json b/experiments/steel-plates/stage4/random_with_params.json index a86d432..4838e4f 100644 --- a/experiments/steel-plates/stage4/random_with_params.json +++ b/experiments/steel-plates/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/wine/stage4/none_with_params.json b/experiments/wine/stage4/none_with_params.json index 2621fec..e5a882f 100644 --- a/experiments/wine/stage4/none_with_params.json +++ b/experiments/wine/stage4/none_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "none", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/wine/stage4/omp_with_params.json b/experiments/wine/stage4/omp_with_params.json index a5ff257..94f22fc 100644 --- a/experiments/wine/stage4/omp_with_params.json +++ b/experiments/wine/stage4/omp_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "omp", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/experiments/wine/stage4/random_with_params.json b/experiments/wine/stage4/random_with_params.json index f344a10..43442b1 100644 --- a/experiments/wine/stage4/random_with_params.json +++ b/experiments/wine/stage4/random_with_params.json @@ -17,9 +17,7 @@ 2, 3, 4, - 5, - 6, - 7 + 5 ], "subsets_used": "train+dev,train+dev", "normalize_weights": false, @@ -31,6 +29,7 @@ ], "job_number": -1, "extraction_strategy": "random", + "overwrite": true, "extracted_forest_size": [ 33, 67, diff --git a/results/boston/stage4_fix/losses.png b/results/boston/stage4_fix/losses.png index aa5577274c1a5522a05d0cf025de25ef2e027aa4..4affb9e65aaaf73f61c9d8467e00b0a07ce44ead 100644 GIT binary patch literal 36395 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�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 E4+-AIAOHXW diff --git a/results/breast_cancer/stage4_fix/losses.png b/results/breast_cancer/stage4_fix/losses.png index f0062906b6b0ec3007a207c89ac3610166bfc429..90751761668263c2d33b20c319755f565f40b57e 100644 GIT binary patch literal 47337 zcmbrmbyQYs_%`@rAR-7#tAv1pG}1^Y(kV!HcSs1*AxO7$mo!LA3(_f|AT6EJ5>j*T z^P6wJwPwxyF>B5`ddT(!vOgF<{NP}dlU*s5BY@6 z(sOuYY2#pNrcdE$WM^+?W6j3I%EZP%Vd~)UhL@T7e}A9J#?FM<3&kpoLQ$Y3gkLDW zOWvGzc9T}Q{JJ|xoxm8pdGqGoXCfF+M6CX*n$MDH+|1YF`iq~zn5mvqAQ^0aC#OC@xnci*zLbxfk&!`*kJ_wV0>m?RSzHL61Q$J-1f^T1Ev#ls`FyV+~K&=Ja@R-T<1 z{7@pClmsOabs)^^amHQRe8Efl%+YW#mHz>+1ICRT{y|L2wb5u1)YIfiK}>K5!|&hx zJ1|3agpo=G6Ec#mHkFr`e>bnfaUfUdHZnHWx3JI{YL6hZEk_rR>Y?T3O`QAYzc4rF ztzP`;#d~zOv)xYOP|;vFdgY>YiRj0_CMOqu|9*b{?{5N+{il=jzCP(0mkmbqA9>!Q zSuO4DeqLTEPOAyU)h4-QZf~Is-M{NUPi9V+;&kA?ET`)Tyrklo?%?AKr|`c0TvgRR zIhmy0=wiFK*sULK`y)^O_}{-}DJ~AuX&H=`y`^5WiOMJH#e^m%Cg`^xbj8rCFzmtI zhNSYlCJrXW#S!tl9Q^+GccVSlq(6~^-E6qcEfqfP9Ir6x-*#I4?hW^H^?SLI6h7wl zEYVOp$NI4ntt`*W3&jG(n_^;OA8^QJg@k-W$aHjcTn;z8m-~};kB-E$hH&rRRVXl+ zt+F6;|96mK{nZL6rNR&D#U0brDR9T1U5~8yZLMdU zQu6X(+x(oLgz9*n$H=De&aJKn6c;mM-(%OkI6GNB`u6P`$x}m&rluy-Ds?w^cM@I) zT6uYS!bw&RlI`jGxIjFb`Q_ygg@yFzr$;Ltq4!S?>uncA)vL_?8XNf!4-eU`CfH}+ zHozP5zFim2k&JXw(;=<_@$Wj2jX%xYFDWxj3Oc; zo^Om6clY-%H6G1;8ykzWnylU()v&QW*)xh|*17$)X4a!OTO#`1pQa%F3E` z4uNbY1MxK+Mm_kWr8JGa?_cN2Mt=OLxO$PqZsyb6ENC%SVsx-NM7Ztu z;lupg+>4{FX|yl43+N>!C2q%a{$J|rqmz^S>fUacj+Z~`3?t2gonNw(?Fc8AGc~0} zD)|;60|gIHLaqJEaNS!AS*W1gTpAJ*5{Ip+gnJz3J0~k?3u|ikG38$G8T9J z8B7yQOJFm3>ahB1c`!{*LE*0ba$km0p|Y=^pM0(?Dcsh;Cz+&pE*mnqz8sJ9e{dZ{ z8i()!tLb-&$I|g%*G6)kkEWe??3b~`!XCWHS4`X&5f*-PxT!Ydyh4hUc1ns?U^wY- zD9B3lpFyk!9luvs#o_!06EQEtHLWamM=!gF60`aQ1Ypc~Ub?T37E4J=V&1uPXW2sk zWN#_tK37<89P@tj<$383&%&RDDr}CMsuMLfgFP|yyE{9-Tm5b&^S+erlw{o78ZuQC}rNnXT7W5-rfgmBmQqUMl%%YPUeG|S0}3IpE+%1 z!!8n@{+VqSeE9)OuhsXap`qc&f12WQ4c#oE7(WCAV5-OXf{{F3t7C_TtPLkh8SuU%?wYJ32eh(0d$r-A@l0-}1yUY0;tfn|yI8d3efuV|mvq4K{?de`gt zcp;o|PpjTh2963Vls&xP+}zw1T#ahWCqK((>fTDhH-;Kroq`WmS4}gN3)?^Ied{xO zbaFcF`oJme#zWuZ z0f+m{J~dAlsZ~h2VMS5<;+Ef(j_T0`5a-+PV>|g5A99Za^P%sFiVggzxP*k>>i3MZ zgAuvwVVveenb(`o_HMPbv}{h+gclVR-Hn;ciPIJ;R@Mlan5Z^`}Y;;2#A=qD@_IHg5lg}yrLzB%5iC&X;3WDOn5Al_}OMw00k%) zT2a9^k}GGj)DuIe;6!C-ODcTEUf3WY3sGHyFPrXHue;>+)ZUv2_C%qlw3p-R?3^&`-|#7f!(tSdfS}zA?ds0XPP$QV?B+yOZ^OWFjui6#P+=Jconc?T zeED8uqr;@#plV10M{;$#o(piD1N}W(m&FCL8QAwZ*;kUD8ewiXoiaiBFRi3`E_X#z z0sagDl-|9e(O&Dk|5ylvkDp(jE{3odZoJ<+Eh~%a^k_TRY~)j4GEeje?ECXeOYKnm z!42I>115Sa4SCD0QF)rRx>Kyd;m;0rYI74SWPD7h7 z{sn*Y$GNI{#@KYa^-MJELAQ#IyGWsO@f%y)hb$}+a1&2SX>_+H6|2mDQtrbQhYSjw zh5(LzwqKFG__x8_+S>ZY$%%QV&i3uws&~c8h2EZFh192waN#IuC4EjzL=384xIT-E zhQV(!|0Rhl$QzPVNYGtXQBl!1FxbyY;&q>y7Nn%54M46|@%hng0>3LKzw6;5 zfEyfbT@w>AadC`?4)-t2-|ul4hVk(5Y!QGty%+i+IXT&F?P%1nwzd`unETCduagd^n);D@T-JTiyn=Ck znlCSskP;h6305wA#LfNXt6jWxiC@aT>uJ_UWoR8UGc(I$E{&yus2Cku?%|MQICYh#46ryDEqvB9~d6KGN$9%xV><#&pk6} z-61tGv8UQY@(_ zkSyq#+Sk`d**laYMbyyPs8;XD2;eD_HN*nlFPIP0k8(ED`SkElTU#5xYcddww$9EZ z&xEUs%gg1k(ZO!88^Rbbq@}UY(9lj|fm*CgRtseyyv}W}n}(Z*XX#m-lf};h0`=lp zs1ns|oo0^|WD7TlHPmO__Cwn@E-#LnSO2>3!aHu(J>qv93H>+I+)kw9Cck)Cs8Tvm zSlT4HGLXVJ5UF0=RC=#rv{++db+rrn+#MnOc(IIE6uw<5qtG;ZG$&Qnp^{rBCU|wc zJZgYL{a##bgIIL4zzYFH#see+-EMx~_m19t3BUz@Bn`v$xR0~3>yk1yHr&x9V7 zzNICD=h^O!(ED7*P-&Kv)uBthaU%dN=A%V{xIXC?1Ju?r_(HO`}S>sr`?Ux=HX^fPx~gQgbL?izV6zRYACMGBMcRR`1jQfZ${+4>O0%rjbt94krOCy{7yJAov3z}o4#aLLlz&{LN zCqQP$n>_`g44A4%KeIpqBG`5`;|gtx;lpjxAOJm+f#ip*tdS8BxPa?w)s`ecDX0Oz zy|3OtIHQoz6?komhYvHlP?AxS**?5FQo~e(>;*ZWmw+t@VLZ&t%xr_(@GUGXd_@cft6!LxJ;^K(eO(Tv^x10N&;rNO?fA00h(UH)+ zO8rNX+Utgs;W^ zi2UKvd6D(i7grznYbJoVP~p#@L=KA}z*B}f&sC9JEP zj)8+iB!pqRHO0dU=SIFznGwF}mz9-eI+W>$fsM^LROa#br%LPKpj@6J9S8>6e+O$+ zvS|WVkt-ge-lY64iU;dIr9gb$x^d$M@*1}L%QC?Y0s;b=V&PEn97yLox2A#Kun%rHXfN3nPtlHTI`KSmPRCPTrL1pQG^+IbMA6Mh%<_@r) zt_uVrd6S%+oD~4nzNvNK2#)G?io>mGi~k@l*d)ze8B~-WkgT)w^L;IQXn%-)!)0P( z63SP^w6U=n$`Zrbg~pMzAAjL^^XAPQUTX;j40-YC-2a65FrMTg+JEAFEuZQXBrr9< z9v1q`4AP{BrS=t7RexVHL{js+7-C0&>c#s6*K?AZW`9Jv(i24;;f{#;RF;*&G-f+l zjw*Gn-&8lL*UTudQXm>XDwP+ZVDQ0zB0rl(_CIyrs&Dt*-)OeU9q6tHNErXRS&*MB zP{aOpgSkI#n$Ja_KSwz_I>Ps>EyopxMCf8bM(~Y}h&}*P10P02MZs4i$?Tt^qEfk) z3KZwQXS@WFl$9C0_kHtM*?Z7rK};QZau_Y?FWy5zgGP>d>5r`XDJc2;5TN_;sgeWh z)?~~38?Y#mXc3CWcEk+_ZSsXb{bbW=`89!^nO02%F^SgJg52uv?mpNUEA874BcNep ztN8Wg)t1=L0wpQ-^FV6;HCUYkabga0d^nva!?y}bE}`|Bfgl65@M~g1p~6^3+vCJ& z|MWVCcS5y2SO@!4FH=)f8_xE6vp;=Ow-kKz$PYGZVSe5Rj`}!7(Yi2SKMAe{v3+AAi*!v?Vlm%m!l_>HduSoR+kQ>d4}QicjWq zj$+cP`whD4j_#kC#w4%`K+ab&XucI_xtg;H#U0n_22SE`4 zz+e%xr2h&G$qAye@XGG&fyE}~d&hz_PjI+k>jBVzRhY;Hj*_$J{?}9Ccp!^I!e)&6 zY}|j3V*Az?l~QeAe}BNY2LQGm@Di)QEAo3_jir$>Kt6p21RIh0cIt(rM~LTCsc`;Mv!{1U6d-2g9wY+JirnaUe8*FD+gF z8gPdy0Nw+DGZ%0eXf47k1yuZyUYzpGsbg?39C&q>a-mw28xPciKAbXS6@dSL&z8XZ zceFidQQFu67qr(Or5zEac`L#x>kkN>h0bsqZf@d6ZJe(lP%yBtvgOhQiZp6&=O}ao z<9h*S+IX!!4On@ZK$70Qd-oa0jvL2o@HyEnMzI71n}vG0ZRdr7kF+Da5QtY`NXX)} z(=39i!otG8mzR|{ZD*|JTK(YG{GDc;{oxfdM%K8UwlvH7mD`KCfO|k+LWn{Vmkp=R z0wQNoAY-$^0g_JTBZ1|Fme=WX{njzi8HOe*l+arZ6Hqu z>M%{f9lALRRv-(=g0P4PtLvd9klE+&-f;uz?dlQ-R{3JG+Dfg$7+Y3W7O383BE?5prC*`t^6X|IkCFp&74qh0|@=Q zaQ?tN1=9lLEs>XMnZBP$)5-pdhP0v@@km=Zc$RE7uQ47{Qc?LS3amE>$}gVgwbhTj$W?fi$W!;F7!^s5o5oOr*C{;ytp?@D-yVmx05uh!-l+(H_0pKqL5HhOAk9?9&psZ9c zZZ}zgEx&>bhm$RL`ZR&p^{@!l27;O4&~~xw4q5;Rfy9xm6x7efnVWCH-+GeBX{G)v z|B0f+=qbD*!(%F@kReli-W1u**=8LSBHx4p8theS?Tm)N@eMu$PZfBDx*LwwM5P33 zzLVUuvgi;s_2 zD4wl%vI!mo%4BF_f=5n{v-tB`e6?o{;7qK!;I|Lh6{f~JySo`sOqJn@25EBQq=pr5> zp>v^Pz7SCO{!%SXO~lrKRo%H zKVxn_dkPf94LsE4zkmtB>cz&tKI{3#4l0JZCRM9fn!<`=V_GWH%YvN+fN%}YhCWE0 zDOd*Y5)-?n9s$1VcXE*=RHAVi38ysoE zQW+WIPw5EWBmRn}Cc~byi%V=lGQ0v4OaBjidtlfo$To`IM)0K**>8HawF#qQnY4Pq zMjbCVx&=hA4fGY!i{7Q=jY*LGQ3Oe7$RfZ5O}@OaFk! z&KEjm8F+-S>%TyM>YkAJ`;=a~j#$q$NPyc-7ehCD5*{4P<|zsmLi^TqJ>qP~sAy*Z zB>#YJ_Deucp*_moD_hJ*G^=~;;`Ze=G^dS`TpY+)9@5bGLqW26UbsOid?+nt2I)li zng@)pp^d*#cN$adL3Q4Q+39B>=$BD_KXUauLP!p_XPduTft7@Vf<_=DB!qGE<{VI- z<%x78R)R*U5VK+ZDaqo+5@*alY=cO?V!72MC;Pon9v!{GrYEZ>Pr>PX2x$f=@P&m1 z16e_jvt#$TMiy&pYY5zYA4$dHl9KjAZQZnYDhJmMHNlvlet>TM>FKAy-P2qptk;b4>9#Kfd4cl%`5*3q$ipVV=o13TD& zdEMT{NdQU^aIy8{lh=sb3&9B@oT2O6{h6o|I&GWUc8O4V?F_$g_-E2&*VM=Llr$l% zCU0Z5t-l{zMP*E=loUkY{v|XnDfq)mj0JS50@wri*&*N{fw%vpa!R2+lH>U>RSN_^ z$H(u2nRBM5G#$65)K+((_%189|mS=m6+xZmxh zJ7-G+fyjHEdmB;dU=n;?+G1A01HBD2z8$0ukLN{$vu}4JhuWja*w_wOHpXF2>#2a4 z7y`JJt9#ZxU|SHf`I{ISl|ck^ce~TUpt=6rXIvjZk@B|5FXTW~R(`7J)V7~28$piII@Nlqr_enU~(u!jlq zNhC~`q1(kzYva0>2};Lp*ROp8P)EMjZpkf+5mY-5tb~Xx$(S6>4=3W=#*rD~$W+K|>=(Ae@Y- zsHj#XPZ%22A)Kyzn}vjV5aGI}B)<#GyqKhOXBpB2y z^Mtd~qW6+8RKk00?7FxM{~hpj}q1=Q3Bs7mIh<4k9K zRWQci?e}x_JBx)7x9rS)OJFyjg7R7!EK(?!cMCPXh8Dfq##@s5oEV@uqH%ctW{b~j_MmmcY_t%295^6kUwJ60RqnZ z5ozOsW?^3eBqaog7cq|@9FzykVHZ-mAZW1msmaL?Sb_7;ZEZ2(V~Uhz8A3|Rd=C-M zeQ>3u<^gNofS}M!~$G)ha6a^NV}1DRseXpa5x!1=F}{BcMOT_W|V;T z$gP4%CxGZI7}W;W)PBr{wx88~TsZPU5Zb}=vFf#61A$Bfgqs=&YMx4ID&p&RLH2Z@ z8UKL$&GUwx)?2Lu1G11gBDQ`Y;;m8+o`+na@2+BjIs}_cWwrWndzKkQ#6#c|zQF1s zZa_S`c`zXdx;<2i`K%A-0obAiONzfWG;ETC7dhFhhV?$^i%3WYhVf24af<@r6p#15plixHL2P zv4jH8tHPhcpykbmsR2~Vs;ZW1S5ggtXtG=W`kWa|!%zLcZNdj|li(N*zZQcRMhr^+ zw}#~DS3vMtPkr%z|Ndn{>gB`#e&QRIF9jnbHZybSeA=XP#`_&VTqvE|oxgtx;KYDb zmOcah?+3KKp8)c)OymAUp5UU``5eTkjnxUCLDNZxM z2(jHxmg0Vt>ZE~3FkGr5c$Y@EK7v$dZAn|Z_UY57p8pxVBEze(ne7-F zDic21#@x7;0=5%4koz(}#&V?M-0+4I78e&)`^2%+f0~~xgbVhS!syR&0kguua|6EqcuH}&RKb&3@lQpi;wyes^Sf@unD3yTf6Dt;gZC+2?A zQ`6IkHW?our+)NkZfQvb{3;IfA1o^gyl?4XWB{_NYhIA{;6dolvC^w1(Cb25SRLoOZ+TrFY5>Cc1+7$`xSDp^Cn|NIG+&0PRh zZTLO?#q!ZpHn#oH^P1}F4pa8nZ8R8|Y!@>%aCbh(cC_F!kIXZl6rM-owzz4&L))xeLXC-0(@SUhLx>g%Hx z5FqmcaQ|rLN^lQ_4F*_tHZ{b=QV`97oq;4e5L2Uo?OVwwMMIkRY`ftboP^IcHMw9m zfmKKbUCt^}c3zs_M4^*I$ieK7b>FmDvOJ;WW}ZjbCu zc5AmWvjm;0vpc6D3IUn_3vU!^fn!~brjaXI)fZO?{C}QNbTK^;br&Ie5tV&Ix^!%R zy|8qCaS@_3`t64O+n-uGz>x+Pj{;Bx(;i`SeS;2YU*2vIGB+OF-P+oMP6rmT0qakB z2#vwA?HC^?fyf`BAclsE-vor$ZpzQudrQbQvAf@Eeth1u7BccneRAG#!BG2w)q_jt zVh16sM=OSa-w9->qtDZWFNw!Mrb7V21G@{eJTMw{8&V@=Jki>k2^n94i9sp>fmGl> z(ehcMKyz=SX55doz%2d-8o?(i={}_Ml=Sqsx?FoaVbjbes~I8me+I$=u{FQ~-G$nK zNy?t{;~W~8;>^C$K^x*becNELn17Mj9@WKe7-iPAC^`^&Wo$^*jNv_%(aa^ino6s> z?Iljb-YaL_oCt!{;e{t`Y+NT5yKQ{ydk7@(DuK>=)k|j zKS)f0hGf~Wl&ydZ`knw8noVvebEN49Z4nSLm6T(TpE+)Dwc7Yoy>lRYN)~s&Gmcef zxFa9?Ps)UW!6Rn(wOycuQZ6noew#H7V2_Q!Yu7ofwE}V>1Q~P#C|Gb#Z+#7BZW32i z#0US<1Sl;cdQ`NX{X~KZ_1N#3%{1`9Xn{aNM!XXhJgx-Vt(_kX+j>rkxt_?qeFt;C!AJgyYXei`x0ntO|@qlx`0T2MrIC$Tt zp#{==`uSHmoykRLQCmqfc`HXBXHVGv%3-y>0{TSY{rlDW!vT}j+;9zYw@Lv5EtpQG zyoQb*6@%Oo$^=>Kgxji^AkR^Gr^k)Ta2vi*lyg z%wPp$O#Ew#nCTT#CW^{-w8e^L(iJU4>?2jw5+a_WlJ=Le9M2Wq zc_jn6ECM<7=QwKCqa*|E?qOA@x>NL3SC!tZicc?5=CgKX{$o%XieqX*(Sr zy+#w*6Q-YeBwRTP0c;o`w4$sbN)gQxYc08+BuGY-dtkjFJ^#i8dV0xCqxkItc3)g! zV=+6rb9@uF!6>tL$9RkaOx7DV74*(Tjnl3~X=-p0E(~3$JRf3TZ+LxYQQ|jjhR;Q> zshT~1y&}t^c%STR#HPjg70z2;=Wy6iTT`H$_J8TO5c+e1F4~Y} zSwR{8dKX1yC3FK$!_+>FqL1k%F+^Bq>pn{3i8@cQNGv6OwYK*KFDd@Z4StRQ4_<*R z?MTr9vXWUZ;8mn4;MCoI&+@zY@L~l!>vs9T5+f%4t5cs(FSM~Eh0L^1)2`zlHHdoQ z!s7HXOEgF5iQn+E@;l;j(S!qZ%(f&q!BbNR6aZe*i27=}SR1_GsvjA-44Mo>E5^9W zUaSI({-We4L5Yb@?p#Xcwfjy31^09nyUc!Xb#6at9_ebj!z39O#1ur${}a3o5ilFU zv_n`$_!DO$H($;Ex}K$?-lg(lte5C_YN)=XTJcDv*9&+*=IN9Vnz9=o91&$cu#}t9 z28sh))FY1mJUkwj@JoarL-=oO1o}yf?O?TC{jE7WQM}P5wa=GN^P14+9IopT(S48y~?8wy(2;mjx zOvM@PoypO&c83xxoJ@vgq0kAmuq0fv9bhgU0?U{uuRlTlB?>;cTEjb5un{}J=>n6Q z6^O;~$mNMG;k|o7U|=9ay1=HvoF4(p9c;vYXDsxq075O@-8Z2b!*p{;PtTzG&7QMCdR`*LQXS{xo!}&8b>EXhm@1nHzSl09k}IpPAkCyO(4P9WqYxlx->e zTdp^j7n%HS?QXK9pr1T(_Yaal*&+J_(c7M)MtCuqy+?D+In5%+f8N}E8~A9(Ut!fW z%Ki$DyPGpnvnFw<&#}W*&(7r?69>*GY6NTqoj(mp%WD1-nyr0saHQETiP+=Awma}y z?8`M+kBPz+iiosuTkUO}WqVWxQp3{H@_2tx5E)GVTwbofHk<>a%R!K;l$i{Y!5tcx z$r>9!28`1OKL=4uz!vvmay?=8639Ig)`5&z23?HIk6*&z3*lrur`0{di(@KibySp; zJ|J^Pz#9Wu$GF!IVIwjD35*74ItQd9ZBdV;etof}LRu6=7z`TKML#+j`91LGJxX?H zraXvY;V}6y)H@;$t|w4mlU;1obHejIv#BbRA`}8OKPclj8RKjsys{3KNcyY$*#ibus+&NS=`1z@bDk>^! zUH;Mm!+)ODofN@EH5PEb+2yYtdw{F6srcwJWeSET6kfmP0fv&{jL2-T@5J@>XTqys zL=xsMzrZXPaGEQ+Fr?m>@+=NSG^(MY;T@Px@h}97f-y-@o8KFp?P0t{2n6%MzyLBN zY59u<<-kh{f)p~?1d#LPkP9FKX5b^O{m92dk$W6Jgt;+fWFAJX@Vsu~J;o&==?0@n zy)OC@Kl^oeQR)9_65$x$6dKIp15e+aSEt@Lb5XDlnc~dG?KHzu9q5jUHCTKjP1iil zC#mSDm~dE(`-<%d^R4|rR$lr$RTErIxu19*{Qg<2JZ)2>8rK9-=x8(xcI1*W5x73~ zH+k)MuD+q~760}3fxg0DjEA@w9(}RC(Sj4ivI3p}#|=Rg7zYmp1WJv0p(K9&QUx_> zdD)~^#l%Go;4tHkW;Yn5& zeE(wiH#7FbYu#$jRs4Yo=#qC`6MWKdsNosn`>^fu-eudn!HJGW6z$MvLY%i6FMe>8oQ3`-#rOb|E5;*680OB_7apKT5ea z5Zxtm&6#WU!TaB$iK&x39Zy5auD)TVUPyC)@b_vmE(hCKSBxR4f2KV*Nt~3BXtxh} zG;+5rn6m9lgv4i4j2zEOIak$#Qr&9~ZKa$Fr+W9;ySq5bnJ7JX3@CAhr@H1UUe=sE zJ6uaDQptFwn_KPz*wgaT495Jj#x_m>L!4o_C=VuFxU8pWe{wz`CC!K7Q6QF_xiIt} zM#gXM0bY|8usj&!^yiVu9f5pI7IMuV2dv>}sZkWaVVRk8)s3T$7H$-b|A`ZkpcLst4vrWJYT|qD^7q^g}C@RAXJsBP7WI{W)Up z8k&|%mDJ(oP=^^~8_2W-#5D8Ze;R^!l`}Jda7%x34{@-n5e5p+t$^R$e%6$dLW*bu z(0DK-j<8rlCQWew+AOhfroop{sT2g-S1Tbdw-@^aj+s4V#6tV)4!nqJ2GtIxBs_DK z{WZ)SWI7hPzys(;$oSGkWqy09AB|d=_L~LAaf|mqIv$)=gwI)uGYQzE`QlCuaNc#6 z5)+o5S*_Z?S!Z|CLmKPK1ygP!Maqjel+}wZgVWY4#3yrmW`GN^v`0`9Qe&o#^9d2yy-^WP&f@Kg*uY7qnyY7Wu}aMc<1kVlnZWXbCe zmFRcS2rv%S1_LIxj*d*F-y&042zW6!5tpVd;0`iz49WBkM5a5CSlKT3krb#53R0SZ zJO;ba8`NqPcsvy_dX0p8Fun&y(T(4biNS!!2>6}=#sU8RHvlm@#>U1nqqXG87HL1v zmRc|M{GAu`j=2#kqiq!-Lt_5kSE%K>l9s+z0e%wK7{!+uGYXzwal21yJj5BJpcw}C`$?9II814BhqB92y2S$p@dD`%j+0&!yo z19tEnAWJR>Fb5zOgvazPy}iLOcb^1$u044a#+hNN7fI+)AS%y*goun%Pt!xTo1EJRzbG3) zCc((&=dW+=?CkbPic0+#g5j|(8&GKBkf|Y)3oy3n7i$F1^1)!y$2n8U zm96Rx|2ab4_h=d-x0R2k83+TTFL2jHADN*Om<$Ja#7?onq(B%02V>AfEZ-6W>hOY9Mt`?EV4~6rbvOx|-1mW8IuVP=>w!R9sR9vc?Zv3j?@T0oU+dpQ> zq>mPVwM^8X!^QIZEqaGvXVH%>w;JMVXi@hMe(65XXVHB*li3h$oW+v9nC4JOIZ%N+ zH69Mn5%B6+MH;&lccK%y61@0huIs)}2o?)1F75Au=F2nkkxTMH%&&F^xR?&ko_Ib&Q9z1!m3k(+q*=}Mn ze2HF%BqRQ*QP4?MKKiOeW@jS1UNFbeW$@&Lx_4vM71x|Fx>YZqm3wTgnC&TET|t(5 z{fv!?QamvMJ!N8-s4FOMpLbcW1AWppEx(vKFzv?~zsM1{!_MsqWirIT?!^6w z$e%XysJ);WPnEdm?qck32Q|IETVeR3mMpr$wlsNVwf4nvXOD9Uow@9BXEpD zfeb*rh#&%bOl+?o<{ajKztz4_qDEU%pOk+<@Atg$dsZW!fugeU(DNjrlA)kH%^OTh z+;2EKy*1@MjOZkAKibnAJHM)8sV%^_ewNzFT7`C{{Ut!JQCkrH-1DF}EV)lu^b5OM zQW-W0oL@wej_2WD#}Q(E{l&MFZXBL4+N$-< zg&%w=`2S*rBV8RVv5h8M?RZ`Kx{eL$!{Y10`)a4{q2A zk27~?`lMTaY`dSrD)5`R1V4A=myu$psEvx-vcI^l$cOJy-myte(?v?Fdp-|Es(HA} zAJtD;Ym*4|2m0fmiN{_GdM4;r#Hdi*=Nsm{Ei$%$i@k!o%fG$h;JpEb&Fn3r6ztWwWARz2P4Vlj3o1dG%@c!Y20m^%rV+ z0bIQNA9bvRGHALv9tFdC4RhKSCQD-C&iUq+|*STL4r(#*%#YJ(IYZ%5@h+%{b zh&1xJEM$y#V1mZ?CLRh#NZTeSC;2Eh;Q=`qt^8hT_F7+GKOQ_w(X1hT<2l6ih5oqT za)X=&ZV!1h4SI7sczJY-#5qwF*)k1}|JN*l0!BgMNPdYd3|PN;nY*MAMip01D$W+$ zG}tx$A_5oluJ6Lj;_`vvjwrqRp<2sXtlgGoBxRH`zoI@A*OG@^G0+|%QRAk48jKxe zxI>jdTvj)-t2Jdt$)=mtHH*{s!;J6fj_Gn#swKg{V)l1Cx}X5!pE)tXG#`wS1;F@M zyoE((R#sX0zm=;I|L<`Dj1e`hC@i39O-u zKD=Ex%92F(H%wAxXBop) z`5BUAz4h7s!Ii(=d>(;Mfp1Pm4h>BG=V7Dh`*bZLRm=o*Fmb2eIc-c{^u!+|Kg1Q^?z5OBjVwyZQyqoz}~3r z%(a7|s9TGwZBI}aXH+3Q1EJ%mlWAv#)6KiZcfWegWJ!pN&(~<(Fr6&tswx!h^c@<3 zfaj@Ah0Y*_v9x;{$?MtN5;==|KipDrRv1Mbbz*w{=g|?Dwwn*T*o_I&%96*`&2G6r z^?Wgt)ENIqaNBro&sni}xqU@yjK$&WyW1k0EGuf2x;*3z$$_KF-@c^R5EC81lS4sE zI!qK){Lyh@(#C%aLK`@pE1gp=J?dlhzMWPW9C0OcJ0{l5Buo7?*Ty2}`K%eP;!^it zHnVmo&a5wUbT<~qy*Vz4Z0>TretU;IXy1EbcD%9CBlmS&@%+qv>t7we(6Bl<`)`v9 z$%tdbllxMCBxY%EL%ZUQkCAe1;_*6xDuaz=@lt=shv4I>Xb0)jk1)8b%^3m zTdD0FHMc&Tt{>TQWvgK0{5g?bP8J^L*|>u)cV=)qdLSP4HA`-)ca=GJXT8_PzBQl) zHO0E|SoXoQ2VT7%obPXJd-}x8dWhF-mHj0e6ga|)W!BQ7L0eBuX+QUD0Lj^SdZ0Vf z!N_<1qxUIVR9MjFm1x+VC zN9?ZXRMI?FMN&mcmITyW zg^om~;s;rAnpyr1@5z@Ud~+Er4duRfY^BFEKD>XC*Hf9zf553?A7;U|t+E)!91YJ- z@qTu?IMvU584)J`6m4DDEhsLv`W%bx!)n$Cc^rv%j$(?VAK064EQ+wrKCV?Q+_;jC z{@ibS>h^_~tW8Cdz0q9>qhc{nesF3mD2+ZT(mQPcN0Nu(*~Np5cU(Ev8tpaxF5#obQj9HRtpX5xs9mT zXk8VTT_2}Z*0%qtKSppTC0W{w_w$vxm0QK}B%|ib#4qmbycFK~G}z;$cU5HQYP8qi z0_O*^@wBt|3&sn5iHWdwy(zh0j~Gb2awc;Xs^;WR9iYCe>4-0D ztv9{$fs%pq<8F>}PwfTm{`F+5?>sa-X-7Tw<3v%6FXr;R<2=v!EqY~z2p*QKAK^~_ zNjhiM9-`u$0)0rNGJ9cnN^LeMXu1nv7|ZS0fU(qVeDmm2== z(r^5e877>_q%a2`;|4MwC+LmK$aRWVtKejI#l6mLpb)CIdgdNAI`qtpk)QNF>wULC zj7FKRYqYjxCnM2rXU&6ZUlxl+dly%>m)i7RA6xDwVUZ0tlV(|XGA8&vqj$z&9&k<0 zH<97BtPP7mbu)c-{J|!&aP}g{_oLbu7$Pg=nALylx6$y@na>?h`RB_F!BF~9zMhpw z2HjOwIdS&No;U4^nP;e{9;^2mOT~&n^zPs<9S<~ zebSb(#ZQ)ypzsa!so6#42XXl!`>q1tvNuoMs*i+}H`Dq?3o_2!zrFfL?LLScinQAe%nPq&cpT<(Vf}UuHphVx0Dg zMSbV+ox8kMZ#2Y@zIny^5;~uzZFUTt> zTd`zLg31!oMoGBdR-WCtHE3Pu|3~RPYreJz&u?uPUM`M$vbg+@w_GlwCB|)b$5U^q zsX3r)(D|3;*b$FcTivXuu#ohUU(;dXvy$M;5U=df#Z22if1>jzO^DX~3I#ly-py0W z#%=T{C~uNB#gM^7_@BOLHZ!_@vGt^RR7SDVOWIwhN3+x6Zcc&%vrcH3ckKRXtfnYN zn52sb^*~u(iA#_{$waU{$xBSArX$iXqJ4`xZNRy`?~j z%Cxz|-Lox-2GD@k_@}?b-;AKq(`Q!9ob?3vM<2&vi-ss(e~lq3Lrdu+@mEj5t=Ppw zvT|`TOQWqiD_Tnz5QOP-+%4_po=}y{H6PnKL#ECSkpUsi54d+oW9!+DCz3EZiW!V9 z9IBPD!vrPIv@{rFzm??)2oSrHMn7%Jq%$P5J0Tg%kazInQ!2#!@u#G z{piXVX=#mqxnboYlx>emp7k$`v_FikQx#t{16sGZTLl^%2^vc3)^TNoFaD8=n4KT{HlE|KQW@B)Ak5l*xNr%2 zXhs}Z>$NXef0X|1i5NB-d<2^w&G9`kfoc#|w_9 z+lPUwM+fTb)l1|TFJ!X(hNQ{vmwffA>xJHD`C>dGT_Bn~`9FnKFd4X>$SjK;(S3u6 z@l1-Iqn;aiMX{&#!1u~Mzx&QB-VrJ;_JCB=^+yASP4HP4ok%F)ZKGrP^oy(SxjEZY zVL26=Yom_OVHd|@N<`dQVL2e|?!2Kn>M>L{id$Xgymmw<6~qt5?k~Ez*&MhPIXf*p zUapUd9&_<~8Xdj49IM=P<(<)rEYtFk(np@TSNF9e2l^zGhX&y(_Ev=v*ccI;tS*J1uG?ku% z7ci!cv$;7kZh@|nX;wxfn?b7ImpUSI^_Ynq*J7CRxC+kHE%`$8+t)-i#s-VhdrVx0 z2qca(&mG(y`=^@ymsS}LqS>=0R13rW znkDbvp&i&VQ~X%3)l?Ozs2j)~vQi~TL>C+CXy)Lx<Z6QY!u!ex`*m zefx0@ohj&`^XsE5{-3t^=}%7s5kzS3l94?J_;OY~$Z!An>1pxLziiJGxu3I|pH9d9 z#7S^@hxC5?AKg&>Yu?YrY_=`ZW#4jt^otTS zwBIy&B>o(z59I!2?3luckf=->Jt1)FuCc57-gXwNSsT;z%`Dake8zDV+4qUVKroF^ zX+a`sr4^3$lbT{3uEq&x*G;cC(BAzv;^la%Zp%STEB`7s9r235;3a4gB8A=>v=Dq^wP| z!GE<|fIs(cyfsM{w%)>O==c0-BlF~5H27;y|jkGI@$nT{+%%hVSz93HRN}0M?B#^B>!2x#enm6{e1!4z zQbL?&!K!E?b*-Y9ksK5_*XwD$ZW7HE%hbs zdS!cHYOFeAL4iA4hS`oBnhiFZT$Tn2Ew6qyBYkZ;nX*3;$ZpkF7FwaE=u_8D5jn0F zD#bkfw|eu^|1qlP!54G7^pcYBE5~|$o05<-<=>t&Z1}Jk1aN=*#vfCb<}<=t8T=EC zdpvucT78>NCfWciaJ0;=*KEPd|Fjl}P-Z*N@+bQfi6pYu)nVTd#ygL@A8BpJkpuJ+ zzW2k4K|62ez8xC2e>PrmqMdv?w=7V<**&^Mcz7+FD-a~HAWdOL_iA?G=pdqoiD8Ha zow%sPJ;wDDqu7J~agg|V$!Iz!>zv}Jz3iU# zz>0L6{Vx9Lwx{R~@y&zNx$*jM_sYOS>9DynZ~KC+h6`%I^5_Qbo$$Px)K)_^?{V|36yT}A4^VE#D^SPCr;Yw{U95gz{ zBkJz>!ms>+Pa=(W!{W`b?hkQ?|hOsfw($s`v z&%HqK+I}*7x^-te*YV$6?xry@9qaeDp+JBvtfw6WPdem>TJAvhvQDKtp!J* z#`8O0X@~~~Y{R%^dh`zO{nhKo)os2s7P$J!NUZvK4F0#W?#F3fxEJ!Brq(Mp_92p{ z6NJL?JcDSF1jif>7UE29ell_Oj4)Z=1raWLRxo##wtCf8vR6N-nxkKCThTTC$#g9u zG!rKYnP|lci?1MU?a$$ILsk{Pbxf4T(iXjVthC)!puX9y)Xw^}$l$l!nUd*$hCcbQ zWsGaT)bBp3%ju)%|Iv`H_f2A7lmZ6V0z?>vmV{XyT^qf=wzQdOJ`WF`!%dA}L;Cn{ zi7^2ZOy4hGmxHvyoN5w5??Y9yNvQy=EMd;D`P?;0|D%^@=}G8;H_mX#`R1C1MTAsZ z<@F~DHbp8K1A@Mr@;Uz2VvL`WE7NLCuMGL?#Qk5|>Q=!y()#%a{Gi7eG!3uwJV69$ zN15DCoTFLIW^aPR`#m!(AuC#Z)v4GMLUcqwt_Jo<>?rzTN4_6y^mAXhzRJElAbl33 z{Sh)?I-si~8A%ybxZCFDw-IvgEOZ4<$&EpXC-4-!VYuaU&Cgr2>lx^A|S1WVXYV z-@uhzKSC9pr5PQ0txVw<`D^OTNo2YH49uul3{^iwh*B z3Q|WguXsdfWkZbJY~Vqj^=QaX&N4Xj@%ja2xFlj> zb;4POFIM5t=y{An?PL*-nm^TLF5N3-&9SStcFGGh{5nvcBKCNp`E=FN!)ZImqElm_ z5J#rmbx?8(a)_}?hBa1(Q^aDtK0|o^hX&`~RnmK5U9U$5WG@U}+pvvE&`%ov@NRw# zk=iG*qLnW~psrHYk4+^-S5xn8>uWmFv>HX<;`jn18qn7N6MvUrd)vj(uh@0(nG-%#* z`%vY7IOd(;II(hB9Cm4OEaShRu3*N!|Fm#)GGOG$es$|Ll&d>h)&8T|fp)k(#b7Be z`w#D&YZ+>>nbw0IHphJv|FN`YBT;Il2HD)tnGU>v0yGmI^yX{5cC%iRDatCr+KWZvOVyzHK&R)irYG4TU8^gba~rqa2~q z@}9|HSo!21-b}(+Zs;Lukqzm1kJj#o-=Uj z@^9W)jjp1i!t+Vg`7Wt+8i}V+a)-hSn%;P4BCxGp7{fh5=PCU z*Oh5X|E;~(&2CLbMuu10R5P1!RLa$S&J`kFV*?>c?;JKSb=SZ4;GzvN0c}6g+U zqb&^DbTT3Q*9k1z_zo7{NkXGY5}F=V7^YbV8dcjy`{^6__T^x!hb{@;D8mpiZaqI#Hq zvVVdIGOnHObRV#=351!rFp&Qdk1|-opBVGS3#+Gc>+syc0vW`}xW_U}UahIow(ecF zQdf(&=Ue8HF8f)v^@p|Ag$feKL&%Yo(zv0>aG^R61vC=eH%`P49s_O_!HgkPvdgBz zROx|ImAyrGAb2~KvxzetF45kY8R2B0bTJ#KAu((I-FCPb)#iR>>_pe`ed3^B{OJx( ztTy*e%?%^T9Jtr17|w)j=sjmcW6Qeijig~oA*xL-S0~Kts~ykZ@pO&9xBulo>;H5P zT`!Yrl{mvAUQ!4Sg4V*vG?1}lmPFxx+D=$@zaD^zCgMlWmky`cJewIxOUfMILrXg! zNHwG>ZFLelK^pX17r=bt59+VAG8#;tX4^@S%h~88($s6b^Um@AR-QmYsT1s>{6Ga33^Qb1v3e*|TyGRfJ z=5@h`fW9l_u?l(MOaB3*Jn|FcAX1_H7< zm+1p!h&TJ))uj0*qj}rOT*vKnp?je<;-9XgNj(-TT$$Q)qwp{0WrbGn9E=bpk@0=* z1TzTS>FpvKOa~A_-QIW5>JbU=2uV=cLeKPA=n?I=$FS1eQ~?D z=ze3$qx8F*2nafu(?kr^Ln_WcTKTsS!x z_>}p6p4nD?gqhN#Z+^X1-TFwn;=@H?Gxo;^ma)#vgZGBYIy#6i z$GWn=u92qm%$jg;?5Vn+E(|#rLjLj$DyB~AZre*Tq#=*Aj4QR1InyTYCz029N

b5d0gl;6H=00d( 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 G$o~K>@hZ*$ literal 44954 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 EFA3W8a{vGU diff --git a/results/digits/stage4_fix/losses.png b/results/digits/stage4_fix/losses.png index ab54aa24b5347434be31130026c4ab451f3f850b..bb2745c8511a4a0ceaa25b6d090d82fa07e1c3eb 100644 GIT binary patch literal 50044 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