From 12ff3ee1156f25b7e7cde817937a5d72e3cce45b Mon Sep 17 00:00:00 2001 From: "Harle, Antoine (Contracteur)" Date: Fri, 22 Nov 2019 11:22:57 -0500 Subject: [PATCH] Ajout des B_TF + chgt mag initiale --- higher/dataug.py | 6 +++--- higher/test_dataug.py | 34 ++++++++++++++++++++-------------- higher/transformations.py | 6 ++++++ 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/higher/dataug.py b/higher/dataug.py index 5650e70..fa8181c 100644 --- a/higher/dataug.py +++ b/higher/dataug.py @@ -548,8 +548,8 @@ class Data_augV5(nn.Module): #Optimisation jointe (mag, proba) #self._fixed_mag=5 #[0, PARAMETER_MAX] self._params = nn.ParameterDict({ "prob": nn.Parameter(torch.ones(self._nb_tf)/self._nb_tf), #Distribution prob uniforme - "mag" : nn.Parameter(torch.tensor(0.5) if self._shared_mag - else torch.tensor(0.5).expand(self._nb_tf)), #[0, PARAMETER_MAX] + "mag" : nn.Parameter(torch.tensor(float(TF.PARAMETER_MAX)) if self._shared_mag + else torch.tensor(float(TF.PARAMETER_MAX)).expand(self._nb_tf)), #[0, PARAMETER_MAX] }) #for t in TF.TF_no_mag: self._params['mag'][self._TF.index(t)].data-=self._params['mag'][self._TF.index(t)].data #Mag inutile pour les TF ignore_mag @@ -631,7 +631,7 @@ class Data_augV5(nn.Module): #Optimisation jointe (mag, proba) self._params['prob'].data = self._params['prob']/sum(self._params['prob']) #Contrainte sum(p)=1 #self._params['mag'].data = self._params['mag'].data.clamp(min=0.0,max=TF.PARAMETER_MAX) #Bloque une fois au extreme - self._params['mag'].data = F.relu(self._params['mag'].data) - F.relu(self._params['mag'].data - TF.PARAMETER_MAX) #Bloque a PARAMETER_MAX + self._params['mag'].data = F.relu(self._params['mag'].data) - F.relu(self._params['mag'].data - TF.PARAMETER_MAX) def loss_weight(self): # 1 seule TF diff --git a/higher/test_dataug.py b/higher/test_dataug.py index 7a63b33..5dcb7bd 100644 --- a/higher/test_dataug.py +++ b/higher/test_dataug.py @@ -6,21 +6,27 @@ from train_utils import * tf_names = [ ## Geometric TF ## 'Identity', - #'FlipUD', + 'FlipUD', 'FlipLR', 'Rotate', - #'TranslateX', - #'TranslateY', + 'TranslateX', + 'TranslateY', 'ShearX', 'ShearY', + #'BRotate', + #'BTranslateX', + #'BTranslateY', + #'BShearX', + #'BShearY', + ## Color TF (Expect image in the range of [0, 1]) ## 'Contrast', 'Color', 'Brightness', 'Sharpness', 'Posterize', - #'Solarize', #=>Image entre [0,1] #Pas opti pour des batch + 'Solarize', #=>Image entre [0,1] #Pas opti pour des batch #Non fonctionnel #'Auto_Contrast', #Pas opti pour des batch (Super lent) @@ -37,7 +43,7 @@ else: ########################################## if __name__ == "__main__": - n_inner_iter = 0 + n_inner_iter = 10 epochs = 100 dataug_epoch_start=0 @@ -68,11 +74,11 @@ if __name__ == "__main__": t0 = time.process_time() tf_dict = {k: TF.TF_dict[k] for k in tf_names} #tf_dict = TF.TF_dict - aug_model = Augmented_model(Data_augV5(TF_dict=tf_dict, N_TF=2, mix_dist=0.5, fixed_mag=True, shared_mag=True), LeNet(3,10)).to(device) + aug_model = Augmented_model(Data_augV5(TF_dict=tf_dict, N_TF=1, mix_dist=0.0, fixed_mag=False, shared_mag=False), LeNet(3,10)).to(device) #aug_model = Augmented_model(Data_augV5(TF_dict=tf_dict, N_TF=2, mix_dist=0.5, fixed_mag=True, shared_mag=True), WideResNet(num_classes=10, wrn_size=160)).to(device) print(str(aug_model), 'on', device_name) #run_simple_dataug(inner_it=n_inner_iter, epochs=epochs) - log= run_dist_dataugV2(model=aug_model, epochs=epochs, inner_it=n_inner_iter, dataug_epoch_start=dataug_epoch_start, print_freq=10, loss_patience=None) + log= run_dist_dataugV2(model=aug_model, epochs=epochs, inner_it=n_inner_iter, dataug_epoch_start=dataug_epoch_start, print_freq=1, loss_patience=None) #### print('-'*9) @@ -91,16 +97,16 @@ if __name__ == "__main__": ''' #### TF tests #### #''' - res_folder="res/good_TF_tests/" - epochs= 100 - inner_its = [0, 10] - dist_mix = [0.0, 0.5] + res_folder="res/brutus-tests/" + epochs= 150 + inner_its = [0, 1, 10] + dist_mix = [0.0, 0.5, 1] dataug_epoch_starts= [0] tf_dict = {k: TF.TF_dict[k] for k in tf_names} TF_nb = [len(tf_dict)] #range(10,len(TF.TF_dict)+1) #[len(TF.TF_dict)] - N_seq_TF= [1]#[1, 2, 3, 4] - mag_setup = [(True,True)]#[(True,True), (False,True), (False, False)] - nb_run= 1 + N_seq_TF= [1, 2, 3, 4] + mag_setup = [(True,True), (False,True), (False, False)] + nb_run= 3 try: os.mkdir(res_folder) diff --git a/higher/transformations.py b/higher/transformations.py index f2f5958..6b76e13 100644 --- a/higher/transformations.py +++ b/higher/transformations.py @@ -39,6 +39,12 @@ TF_dict={ #Dataugv5 'ShearX': (lambda x, mag: shear(x, shear=zero_stack(rand_floats(size=(x.shape[0],), mag=mag, maxval=0.3), zero_pos=0))), 'ShearY': (lambda x, mag: shear(x, shear=zero_stack(rand_floats(size=(x.shape[0],), mag=mag, maxval=0.3), zero_pos=1))), + 'BRotate': (lambda x, mag: rotate(x, angle=rand_floats(size=x.shape[0], mag=mag, maxval=30*3))), + 'BTranslateX': (lambda x, mag: translate(x, translation=zero_stack(rand_floats(size=(x.shape[0],), mag=mag, maxval=20*3), zero_pos=0))), + 'BTranslateY': (lambda x, mag: translate(x, translation=zero_stack(rand_floats(size=(x.shape[0],), mag=mag, maxval=20*3), zero_pos=1))), + 'BShearX': (lambda x, mag: shear(x, shear=zero_stack(rand_floats(size=(x.shape[0],), mag=mag, maxval=0.3*3), zero_pos=0))), + 'BShearY': (lambda x, mag: shear(x, shear=zero_stack(rand_floats(size=(x.shape[0],), mag=mag, maxval=0.3*3), zero_pos=1))), + ## Color TF (Expect image in the range of [0, 1]) ## 'Contrast': (lambda x, mag: contrast(x, contrast_factor=rand_floats(size=x.shape[0], mag=mag, minval=0.1, maxval=1.9))), 'Color':(lambda x, mag: color(x, color_factor=rand_floats(size=x.shape[0], mag=mag, minval=0.1, maxval=1.9))),