From b070fda52294d282bafecf1077c9efae8d2ac79f Mon Sep 17 00:00:00 2001 From: Sun Jin Kim <sk2521@ic.ac.uk> Date: Mon, 25 Apr 2022 18:17:53 +0100 Subject: [PATCH] remove toy_flag parameter from aa_learners --- .../autoaugment_learners/aa_learner.py | 92 ++++++++----------- .../autoaugment_learners/evo_learner.py | 31 ++++--- .../autoaugment_learners/gru_learner.py | 5 +- .../randomsearch_learner.py | 5 +- .../autoaugment_learners/ucb_learner.py | 4 +- MetaAugment/main.py | 6 ++ benchmark/scripts/04_22_ci_gru.py | 2 - benchmark/scripts/04_22_ci_rs.py | 2 - benchmark/scripts/04_22_fm_gru.py | 2 - benchmark/scripts/04_22_fm_rs.py | 2 - docs/source/usage/tutorial_for_team.rst | 1 - temp_util/wapp_util.py | 1 - test/MetaAugment/test_aa_learner.py | 1 - test/MetaAugment/test_gru_learner.py | 1 - test/MetaAugment/test_randomsearch_learner.py | 1 - test/MetaAugment/test_ucb_learner.py | 1 - 16 files changed, 65 insertions(+), 92 deletions(-) diff --git a/MetaAugment/autoaugment_learners/aa_learner.py b/MetaAugment/autoaugment_learners/aa_learner.py index e4460cbf..44a86aa3 100644 --- a/MetaAugment/autoaugment_learners/aa_learner.py +++ b/MetaAugment/autoaugment_learners/aa_learner.py @@ -51,8 +51,7 @@ class aa_learner: discrete_p_m=False, # hyperparameters for when training the child_network batch_size=32, - toy_flag=False, - toy_size=0.1, + toy_size=1, learning_rate=1e-1, max_epochs=float('inf'), early_stop_num=20, @@ -74,7 +73,6 @@ class aa_learner: algorithm, etc.). Defaults to False batch_size (int, optional): child_network training parameter. Defaults to 32. - toy_flag (bool, optional): child_network training parameter. Defaults to False. toy_size (int, optional): child_network training parameter. ratio of original dataset used in toy dataset. Defaults to 0.1. learning_rate (float, optional): child_network training parameter. Defaults to 1e-2. @@ -90,7 +88,6 @@ class aa_learner: # related to training of the child_network self.batch_size = batch_size - self.toy_flag = toy_flag self.toy_size = toy_size self.learning_rate = learning_rate @@ -299,7 +296,7 @@ class aa_learner: reward = self.test_autoaugment_policy(policy, child_network_architecture, train_dataset, - test_dataset, toy_flag) + test_dataset) self.history.append((policy, reward)) """ @@ -326,8 +323,6 @@ class aa_learner: of it. train_dataset (torchvision.dataset.vision.VisionDataset) test_dataset (torchvision.dataset.vision.VisionDataset) - toy_flag (boolean): Whether we want to obtain a toy version of - train_dataset and test_dataset and use those. logging (boolean): Whether we want to save logs Returns: @@ -361,17 +356,11 @@ class aa_learner: train_dataset.transform = train_transform # create Dataloader objects out of the Dataset objects - if self.toy_flag: - train_loader, test_loader = create_toy(train_dataset, - test_dataset, - batch_size=self.batch_size, - n_samples=self.toy_size, - seed=100) - else: - train_loader = torch.utils.data.DataLoader(train_dataset, - batch_size=self.batch_size) - test_loader = torch.utils.data.DataLoader(test_dataset, - batch_size=self.batch_size) + train_loader, test_loader = create_toy(train_dataset, + test_dataset, + batch_size=self.batch_size, + n_samples=self.toy_size, + seed=100) # train the child network with the dataloaders equipped with our specific policy accuracy = train_child_network(child_network, @@ -392,39 +381,38 @@ class aa_learner: return accuracy - def demo_plot(self, train_dataset, test_dataset, child_network_architecture, n=5): - """ - I made this to plot a couple of accuracy graphs to help manually tune my gradient - optimizer hyperparameters. + # def demo_plot(self, train_dataset, test_dataset, child_network_architecture, n=5): + # """ + # I made this to plot a couple of accuracy graphs to help manually tune my gradient + # optimizer hyperparameters. - Saves a plot of `n` training accuracy graphs overlapped. - """ + # Saves a plot of `n` training accuracy graphs overlapped. + # """ - acc_lists = [] - - # This is dummy code - # test out `n` random policies - for _ in range(n): - policy = self.generate_new_policy() - - pprint(policy) - reward, acc_list = self.test_autoaugment_policy(policy, - child_network_architecture, - train_dataset, - test_dataset, - toy_flag=self.toy_flag, - logging=True) - - self.history.append((policy, reward)) - acc_lists.append(acc_list) - - for acc_list in acc_lists: - plt.plot(acc_list) - plt.title('I ran 5 random policies to see if there is any sign of \ - catastrophic failure during training. If there are \ - any lines which reach significantly lower (>10%) \ - accuracies, you might want to tune the hyperparameters') - plt.xlabel('epoch') - plt.ylabel('accuracy') - plt.show() - plt.savefig('training_graphs_without_policies') \ No newline at end of file + # acc_lists = [] + + # # This is dummy code + # # test out `n` random policies + # for _ in range(n): + # policy = self.generate_new_policy() + + # pprint(policy) + # reward, acc_list = self.test_autoaugment_policy(policy, + # child_network_architecture, + # train_dataset, + # test_dataset, + # logging=True) + + # self.history.append((policy, reward)) + # acc_lists.append(acc_list) + + # for acc_list in acc_lists: + # plt.plot(acc_list) + # plt.title('I ran 5 random policies to see if there is any sign of \ + # catastrophic failure during training. If there are \ + # any lines which reach significantly lower (>10%) \ + # accuracies, you might want to tune the hyperparameters') + # plt.xlabel('epoch') + # plt.ylabel('accuracy') + # plt.show() + # plt.savefig('training_graphs_without_policies') \ No newline at end of file diff --git a/MetaAugment/autoaugment_learners/evo_learner.py b/MetaAugment/autoaugment_learners/evo_learner.py index e9a65865..682061ef 100644 --- a/MetaAugment/autoaugment_learners/evo_learner.py +++ b/MetaAugment/autoaugment_learners/evo_learner.py @@ -14,28 +14,29 @@ import MetaAugment.child_networks as cn class evo_learner(aa_learner): def __init__(self, - sp_num=1, - num_solutions = 5, - num_parents_mating = 3, - learning_rate = 1e-1, + # search space settings + discrete_p_m=False, + exclude_method=[], + sp_num=5, + p_bins=10, + m_bins=10, + # child network settings + learning_rate=1e-1, max_epochs=float('inf'), early_stop_num=20, - p_bins = 1, - m_bins = 1, - discrete_p_m=False, batch_size=8, - toy_flag=False, - toy_size=0.1, - exclude_method=[], - controller = None + toy_size=1, + # evolutionary learner specific settings + num_solutions=5, + num_parents_mating=3, + controller=None ): - super().__init__(sp_num, - p_bins, - m_bins, + super().__init__(sp_num=sp_num, + p_bins=p_bins, + m_bins=m_bins, discrete_p_m=discrete_p_m, batch_size=batch_size, - toy_flag=toy_flag, toy_size=toy_size, learning_rate=learning_rate, max_epochs=max_epochs, diff --git a/MetaAugment/autoaugment_learners/gru_learner.py b/MetaAugment/autoaugment_learners/gru_learner.py index db8205d5..6955257f 100644 --- a/MetaAugment/autoaugment_learners/gru_learner.py +++ b/MetaAugment/autoaugment_learners/gru_learner.py @@ -52,8 +52,7 @@ class gru_learner(aa_learner): discrete_p_m=False, # hyperparameters for when training the child_network batch_size=8, - toy_flag=False, - toy_size=0.1, + toy_size=1, learning_rate=1e-1, max_epochs=float('inf'), early_stop_num=20, @@ -83,7 +82,6 @@ class gru_learner(aa_learner): m_bins=m_bins, discrete_p_m=True, batch_size=batch_size, - toy_flag=toy_flag, toy_size=toy_size, learning_rate=learning_rate, max_epochs=max_epochs, @@ -244,7 +242,6 @@ if __name__=='__main__': agent = gru_learner( sp_num=7, - toy_flag=True, toy_size=0.01, batch_size=32, learning_rate=0.1, diff --git a/MetaAugment/autoaugment_learners/randomsearch_learner.py b/MetaAugment/autoaugment_learners/randomsearch_learner.py index 09f6626f..71d8bc1a 100644 --- a/MetaAugment/autoaugment_learners/randomsearch_learner.py +++ b/MetaAugment/autoaugment_learners/randomsearch_learner.py @@ -43,8 +43,7 @@ class randomsearch_learner(aa_learner): discrete_p_m=True, # hyperparameters for when training the child_network batch_size=8, - toy_flag=False, - toy_size=0.1, + toy_size=1, learning_rate=1e-1, max_epochs=float('inf'), early_stop_num=30, @@ -55,7 +54,6 @@ class randomsearch_learner(aa_learner): m_bins=m_bins, discrete_p_m=discrete_p_m, batch_size=batch_size, - toy_flag=toy_flag, toy_size=toy_size, learning_rate=learning_rate, max_epochs=max_epochs, @@ -185,7 +183,6 @@ if __name__=='__main__': agent = randomsearch_learner( sp_num=7, - toy_flag=True, toy_size=0.01, batch_size=4, learning_rate=0.05, diff --git a/MetaAugment/autoaugment_learners/ucb_learner.py b/MetaAugment/autoaugment_learners/ucb_learner.py index dc82c2ee..aa6cd685 100644 --- a/MetaAugment/autoaugment_learners/ucb_learner.py +++ b/MetaAugment/autoaugment_learners/ucb_learner.py @@ -25,8 +25,7 @@ class ucb_learner(randomsearch_learner): discrete_p_m=True, # hyperparameters for when training the child_network batch_size=8, - toy_flag=False, - toy_size=0.1, + toy_size=1, learning_rate=1e-1, max_epochs=float('inf'), early_stop_num=30, @@ -39,7 +38,6 @@ class ucb_learner(randomsearch_learner): m_bins=m_bins, discrete_p_m=discrete_p_m, batch_size=batch_size, - toy_flag=toy_flag, toy_size=toy_size, learning_rate=learning_rate, max_epochs=max_epochs, diff --git a/MetaAugment/main.py b/MetaAugment/main.py index af1f311d..51c9070a 100644 --- a/MetaAugment/main.py +++ b/MetaAugment/main.py @@ -11,6 +11,12 @@ import torchvision.datasets as datasets def create_toy(train_dataset, test_dataset, batch_size, n_samples, seed=100): + if n_samples==1: + # push into DataLoader + train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size) + test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size) + return train_loader, test_loader + # shuffle and take first n_samples %age of training dataset shuffle_order_train = np.random.RandomState(seed=seed).permutation(len(train_dataset)) shuffled_train_dataset = torch.utils.data.Subset(train_dataset, shuffle_order_train) diff --git a/benchmark/scripts/04_22_ci_gru.py b/benchmark/scripts/04_22_ci_gru.py index 194a5f23..155b7c92 100644 --- a/benchmark/scripts/04_22_ci_gru.py +++ b/benchmark/scripts/04_22_ci_gru.py @@ -12,8 +12,6 @@ from .util_04_22 import * config = { 'sp_num' : 3, 'learning_rate' : 1e-1, - 'toy_flag' : False, -# 'toy_flag' : True, # 'toy_size' : 0.001, 'batch_size' : 32, 'max_epochs' : 100, diff --git a/benchmark/scripts/04_22_ci_rs.py b/benchmark/scripts/04_22_ci_rs.py index c6dd5f4d..e1279b1e 100644 --- a/benchmark/scripts/04_22_ci_rs.py +++ b/benchmark/scripts/04_22_ci_rs.py @@ -12,8 +12,6 @@ from .util_04_22 import * config = { 'sp_num' : 3, 'learning_rate' : 1e-1, - 'toy_flag' : False, -# 'toy_flag' : True, # 'toy_size' : 0.001, 'batch_size' : 32, 'max_epochs' : 100, diff --git a/benchmark/scripts/04_22_fm_gru.py b/benchmark/scripts/04_22_fm_gru.py index 799e439e..807d0177 100644 --- a/benchmark/scripts/04_22_fm_gru.py +++ b/benchmark/scripts/04_22_fm_gru.py @@ -12,8 +12,6 @@ from .util_04_22 import * config = { 'sp_num' : 3, 'learning_rate' : 1e-1, - 'toy_flag' : False, -# 'toy_flag' : True, # 'toy_size' : 0.001, 'batch_size' : 32, 'max_epochs' : 100, diff --git a/benchmark/scripts/04_22_fm_rs.py b/benchmark/scripts/04_22_fm_rs.py index 6b983284..dfe71958 100644 --- a/benchmark/scripts/04_22_fm_rs.py +++ b/benchmark/scripts/04_22_fm_rs.py @@ -12,8 +12,6 @@ from .util_04_22 import * config = { 'sp_num' : 3, 'learning_rate' : 1e-1, - 'toy_flag' : False, -# 'toy_flag' : True, # 'toy_size' : 0.001, 'batch_size' : 32, 'max_epochs' : 100, diff --git a/docs/source/usage/tutorial_for_team.rst b/docs/source/usage/tutorial_for_team.rst index d4cebf46..1c81cd7c 100644 --- a/docs/source/usage/tutorial_for_team.rst +++ b/docs/source/usage/tutorial_for_team.rst @@ -57,7 +57,6 @@ can use any other learner in place of random search learner as well) # aa_agent = aal.ac_learner() aa_agent = aal.randomsearch_learner( sp_num=7, - toy_flag=True, toy_size=0.01, batch_size=4, learning_rate=0.05, diff --git a/temp_util/wapp_util.py b/temp_util/wapp_util.py index e48d1c31..5ea55018 100644 --- a/temp_util/wapp_util.py +++ b/temp_util/wapp_util.py @@ -125,7 +125,6 @@ def parse_users_learner_spec( # use an aa_learner. in this case, a rs learner agent = aal.randomsearch_learner(batch_size=batch_size, - toy_flag=True, learning_rate=learning_rate, toy_size=toy_size, max_epochs=max_epochs, diff --git a/test/MetaAugment/test_aa_learner.py b/test/MetaAugment/test_aa_learner.py index 29af4f6d..b1524988 100644 --- a/test/MetaAugment/test_aa_learner.py +++ b/test/MetaAugment/test_aa_learner.py @@ -82,7 +82,6 @@ def test_test_autoaugment_policy(): p_bins=11, m_bins=10, discrete_p_m=True, - toy_flag=True, toy_size=0.004, max_epochs=20, early_stop_num=10 diff --git a/test/MetaAugment/test_gru_learner.py b/test/MetaAugment/test_gru_learner.py index b5c695cf..cd52b0e9 100644 --- a/test/MetaAugment/test_gru_learner.py +++ b/test/MetaAugment/test_gru_learner.py @@ -42,7 +42,6 @@ def test_learn(): agent = aal.gru_learner( sp_num=7, - toy_flag=True, toy_size=0.001, batch_size=32, learning_rate=0.05, diff --git a/test/MetaAugment/test_randomsearch_learner.py b/test/MetaAugment/test_randomsearch_learner.py index 29cd812b..61e9f9cd 100644 --- a/test/MetaAugment/test_randomsearch_learner.py +++ b/test/MetaAugment/test_randomsearch_learner.py @@ -51,7 +51,6 @@ def test_learn(): agent = aal.randomsearch_learner( sp_num=7, - toy_flag=True, toy_size=0.001, batch_size=32, learning_rate=0.05, diff --git a/test/MetaAugment/test_ucb_learner.py b/test/MetaAugment/test_ucb_learner.py index 7c6635ff..3f37f3e5 100644 --- a/test/MetaAugment/test_ucb_learner.py +++ b/test/MetaAugment/test_ucb_learner.py @@ -21,7 +21,6 @@ def test_ucb_learner(): discrete_p_m=True, # hyperparameters for when training the child_network batch_size=8, - toy_flag=True, toy_size=0.001, learning_rate=1e-1, max_epochs=float('inf'), -- GitLab