From 9f6d54f38a795bf7ef3463164bc7834cd91ae02d Mon Sep 17 00:00:00 2001
From: Yandi <yandirzm@gmail.com>
Date: Tue, 24 Jan 2023 10:45:48 +0100
Subject: [PATCH] [Conditionning] Min max scaling + [Visualization] Changing
 the run names

---
 config.yml                                    |   8 ++++++
 dataloader.py                                 |  23 ++++++++++++++----
 .../best_model.pt                             | Bin 37727 -> 0 bytes
 main.py                                       |  14 ++++++-----
 utils.py                                      |   2 +-
 5 files changed, 35 insertions(+), 12 deletions(-)
 delete mode 100644 logs/LinearRegression_10_Kaggle_2/best_model.pt

diff --git a/config.yml b/config.yml
index ab9b5b1..63ca7a3 100644
--- a/config.yml
+++ b/config.yml
@@ -21,6 +21,14 @@ ApproximativeMean: "torch.tensor([ 4.2457e+01,  7.4651e+00,  1.6738e+02,  1.3576
 ApproximativeSTD: "torch.tensor([5.8939e-01, 8.1625e-01, 1.4535e+02, 5.4952e+07, 1.7543e-02, 1.3846e+02,
         2.1302e-01, 1.9558e+00, 4.1455e+00, 1.2408e+01, 2.2938e-02, 9.9070e-02,
         1.9490e-01, 9.2847e-03, 2.2575e+00, 8.5310e-02, 7.8280e-02, 8.6237e-02])"
+ApproximativeMaxi: "torch.tensor([ 4.3479e+01,  9.0000e+00,  4.9267e+02,  1.4528e+09,  2.4088e+00,
+         2.7824e+03,  1.5576e+00,  6.2457e+00,  2.5120e+02,  2.7188e+02,
+         8.1683e+00,  3.2447e-01,  3.9041e+01,  2.7162e+00,  2.9419e+01,
+         8.6284e-01,  7.6471e-01, -7.7745e-02])"
+ApproximativeMini: "torch.tensor([ 4.1479e+01,  6.0000e+00,  1.0182e+00,  1.2623e+09,  2.2433e+00,
+         1.0910e+01,  1.0000e-11,  1.0000e-11, -1.1467e+01,  1.9718e+02,
+         7.9218e+00,  1.0000e-11,  3.7171e+01,  2.5584e+00,  1.2075e+01,
+        -1.2436e+00, -9.9256e-01, -8.8131e-01])"
 
 #Optimizer selection
 Optimizer: Adam # in {Adam}
diff --git a/dataloader.py b/dataloader.py
index a781edd..d312555 100644
--- a/dataloader.py
+++ b/dataloader.py
@@ -201,6 +201,10 @@ def get_stats_train_dataset(
     mean = 0.
     std = 0.
     nb_samples = 0.
+    it = iter(train_loader)
+    X, Y = next(it)
+    maxi = X.max(dim=0).values.max(dim=0).values
+    mini = X.min(dim=0).values.min(dim=0).values
 
     print("Computing the statistics of the train dataset")
 
@@ -209,6 +213,9 @@ def get_stats_train_dataset(
         # Update the total sum
         mean += data[0].mean(dim=0).mean(dim=0) * data[0].size(0)
         std += data[0].std(dim=0).mean(dim=0) * data[0].size(0)
+        #Update mini and maxi
+        maxi = torch.stack((data[0].max(dim=0).values.max(dim=0).values, maxi)).max(dim=0).values
+        mini = torch.stack((data[0].min(dim=0).values.min(dim=0).values, mini)).min(dim=0).values
         # Update the number of samples
         nb_samples += data[0].size(0)
 
@@ -216,7 +223,7 @@ def get_stats_train_dataset(
     mean /= nb_samples
     std /= nb_samples
 
-    return mean, std
+    return mean, std, maxi, mini
 
 def get_test_dataloader(
     filepath,
@@ -259,6 +266,9 @@ def transform_remove_space_time():
 def transform_normalize_with_train_statistics(MEAN, STD):
     return lambda attributes : torch.div(torch.sub(attributes, MEAN), STD)
 
+def transform_min_max_scaling(MIN, MAX):
+    return lambda attributes : torch.div(torch.sub(attributes, MIN), torch.sub(MAX,MIN))
+    
 def composite_transform(f,g):
     return lambda attributes : f(g(attributes))
 
@@ -292,8 +302,8 @@ if __name__ == "__main__":
         train_transform =composite_transform(transform_remove_space_time(), transform_normalize_with_train_statistics(MEAN, STD))
     )
 
-    """
-    #mean, std = get_stats_train_dataset(        
+    
+    mean, std, maxi, mini = get_stats_train_dataset(        
         filepath = trainpath,
         num_days = num_days,
         batch_size = batch_size,
@@ -303,9 +313,12 @@ if __name__ == "__main__":
         overwrite_index=True,
         max_num_samples=max_num_samples,
     )
-    """
-
+    
+    print("Mini = ")
+    print(mini)
 
+    print("Maxi =")
+    print(maxi)
 
     it = iter(train_loader)
     X, Y = next(it)
diff --git a/logs/LinearRegression_10_Kaggle_2/best_model.pt b/logs/LinearRegression_10_Kaggle_2/best_model.pt
deleted file mode 100644
index 582f03fe3775a85a568499c448a18ac353cc8941..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 37727
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

diff --git a/main.py b/main.py
index 7864a33..5ff24ec 100644
--- a/main.py
+++ b/main.py
@@ -49,8 +49,10 @@ if __name__ == "__main__":
     if approx_stats:
         MEAN    = eval(cfg["ApproximativeMean"])
         STD     = eval(cfg["ApproximativeSTD"])
+        MAX    = eval(cfg["ApproximativeMaxi"])
+        MIN    = eval(cfg["ApproximativeMini"])
     else :
-        MEAN, STD = get_stats_train_dataset(trainpath,
+        MEAN, STD, MAX, MIN = get_stats_train_dataset(trainpath,
         num_days,
         batch_size,
         num_workers,
@@ -73,8 +75,8 @@ if __name__ == "__main__":
         max_num_samples=max_num_samples,
         #train_transform = dataloader.transform_remove_space_time(),
         #valid_transform = dataloader.transform_remove_space_time()
-        train_transform=dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_normalize_with_train_statistics(MEAN, STD)),
-        valid_transform=dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_normalize_with_train_statistics(MEAN, STD))
+        train_transform=dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_min_max_scaling(MIN, MAX)),
+        valid_transform=dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_min_max_scaling(MIN, MAX))
     )
 
     if use_cuda :
@@ -92,8 +94,8 @@ if __name__ == "__main__":
 
     optimizer = optimizer(cfg, network)
 
-    logdir = utils.create_unique_logpath(cfg["LogDir"], cfg["Model"]["Name"])
-    wandb.run.name = utils.generate_unique_logpath("", cfg["Model"]["Name"])
+    logdir, raw_run_name = utils.create_unique_logpath(cfg["LogDir"], cfg["Model"]["Name"])
+    wandb.run.name = raw_run_name
     network_checkpoint = model.ModelCheckpoint(logdir + "/best_model.pt", network)
 
 
@@ -114,7 +116,7 @@ if __name__ == "__main__":
         wandb.log({"val_loss": val_loss})
 
 
-    create_submission.create_submission(network, dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_normalize_with_train_statistics(MEAN, STD)), device)
+    create_submission.create_submission(network, dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_min_max_scaling(MIN, MAX)), device)
     """
     logdir = generate_unique_logpath(top_logdir, "linear")
     print("Logging to {}".format(logdir))
diff --git a/utils.py b/utils.py
index 0c585e7..e5b78ae 100644
--- a/utils.py
+++ b/utils.py
@@ -14,4 +14,4 @@ def create_unique_logpath(top_logdir, raw_run_name):
         os.mkdir(top_logdir)
     logdir = generate_unique_logpath(top_logdir, raw_run_name)
     os.mkdir(logdir)
-    return logdir
\ No newline at end of file
+    return logdir, raw_run_name
\ No newline at end of file
-- 
GitLab