diff --git a/DataLoader/__pycache__/dataLoaders.cpython-37.pyc b/DataLoader/__pycache__/dataLoaders.cpython-37.pyc index a157807a2949f60f288ca58c2e5aa8c4ee494c4b..891f1b22fb0cb3d79c2775327a9f1edbee1bf5c7 100644 Binary files a/DataLoader/__pycache__/dataLoaders.cpython-37.pyc and b/DataLoader/__pycache__/dataLoaders.cpython-37.pyc differ diff --git a/DataLoader/__pycache__/prepare_omniglot.cpython-37.pyc b/DataLoader/__pycache__/prepare_omniglot.cpython-37.pyc index 1e0ce6994f013d6d9c7518ead93e637584903f10..ced2ca6efd976e02b99e3397b825c6e704777566 100644 Binary files a/DataLoader/__pycache__/prepare_omniglot.cpython-37.pyc and b/DataLoader/__pycache__/prepare_omniglot.cpython-37.pyc differ diff --git a/__pycache__/config.cpython-37.pyc b/__pycache__/config.cpython-37.pyc index 11137e9cb7753a1e03a1434e187f84782695efda..b4ba62a8ff1c538ccae54acfd3b5e8a69a53db07 100644 Binary files a/__pycache__/config.cpython-37.pyc and b/__pycache__/config.cpython-37.pyc differ diff --git a/distributions/__pycache__/__init__.cpython-37.pyc b/distributions/__pycache__/__init__.cpython-37.pyc index dd77b8adb64a7e7909172e7ee23747523a813c63..d9917b640e3519219608032da6b46f9da4fb09cd 100644 Binary files a/distributions/__pycache__/__init__.cpython-37.pyc and b/distributions/__pycache__/__init__.cpython-37.pyc differ diff --git a/distributions/__pycache__/bernoulli.cpython-37.pyc b/distributions/__pycache__/bernoulli.cpython-37.pyc index b44b6a3198feaf515c55de57aa1fc8d829953305..aae574da0ab9729366f26144e7a3f8e4c4d4b766 100644 Binary files a/distributions/__pycache__/bernoulli.cpython-37.pyc and b/distributions/__pycache__/bernoulli.cpython-37.pyc differ diff --git a/distributions/__pycache__/distribution.cpython-37.pyc b/distributions/__pycache__/distribution.cpython-37.pyc index 016b4e9bc5306ab9fb77b21061944507b6a0603e..088155472bcee48b562c6f3001cb5cc1bd8f327e 100644 Binary files a/distributions/__pycache__/distribution.cpython-37.pyc and b/distributions/__pycache__/distribution.cpython-37.pyc differ diff --git a/distributions/__pycache__/round.cpython-37.pyc b/distributions/__pycache__/round.cpython-37.pyc index a0e2377922efe70066949586f1eddfafd92d6ff5..e550160c64756260090e2580508bfdb8c744e02b 100644 Binary files a/distributions/__pycache__/round.cpython-37.pyc and b/distributions/__pycache__/round.cpython-37.pyc differ diff --git a/distributions/__pycache__/utils.cpython-37.pyc b/distributions/__pycache__/utils.cpython-37.pyc index 622ebab5cd8b19839ae07a9681a67137764e69d2..af30226de32f43395fe864d2fd2f3b4836895c64 100644 Binary files a/distributions/__pycache__/utils.cpython-37.pyc and b/distributions/__pycache__/utils.cpython-37.pyc differ diff --git a/experiments/omniglot_binary_classif.py b/experiments/omniglot_binary_classif.py index fc6a575307a4f57b457dd7cdce08a0211d944ec2..3a913f61d01fbef10228dd77494bdc632a79353e 100644 --- a/experiments/omniglot_binary_classif.py +++ b/experiments/omniglot_binary_classif.py @@ -85,4 +85,4 @@ print(name_model) path_model_checkpoint = 'trained_models/Omniglot_classif/Mixt_models/maxpooling/' path_save_plot = 'results/Omniglot_results/plot_acc_loss/Omniglot_classif/' -run(model, path_model_checkpoint, path_save_plot, name_model, train_loader, valid_loader, epochs, lr, momentum, criterion, log_interval) \ No newline at end of file +run(model, path_model_checkpoint, path_save_plot, name_model, train_loader, valid_loader, epochs, lr, momentum, criterion, log_interval) diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_maxpooling_mixt_acc.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_maxpooling_mixt_acc.png new file mode 100644 index 0000000000000000000000000000000000000000..5999710e4fbeae76ddc7d66e67a62b11cedc61f8 Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_maxpooling_mixt_acc.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_maxpooling_mixt_loss.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_maxpooling_mixt_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..57fe9cef857281fa1dcfca9cd41e33f62c78957a Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_maxpooling_mixt_loss.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_mixt_acc.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_mixt_acc.png new file mode 100644 index 0000000000000000000000000000000000000000..aafadbdb2496d7292b478ac88978c5c44c638e92 Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_mixt_acc.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_mixt_loss.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_mixt_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d410a0bd04a392feb2033a34a61e4c28ef6683 Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/MNIST_Stochastic_ST_mixt_loss.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_acc.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_acc.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba28e939e83ef55a406a3546b0cd02b73c23bad Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_acc.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_loss.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..504cccc37f89ace7333d77a2b034915cdf16bbe9 Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_loss.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_maxpooling_acc.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_maxpooling_acc.png new file mode 100644 index 0000000000000000000000000000000000000000..1b98880d838bdc9202cfd6c2550f9160a65078b1 Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_maxpooling_acc.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_maxpooling_loss.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_maxpooling_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..2810cba558581313743417bd94933943dfea5a54 Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_NonBinaryNet_maxpooling_loss.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_acc.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_acc.png new file mode 100644 index 0000000000000000000000000000000000000000..b23428ed1d1e21dc3b9a7b4e8e353bbb5f83b610 Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_acc.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_loss.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..7c1bf1bfd40be15043e02d423d6ded6c3b022f9e Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_loss.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_maxpooling_acc.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_maxpooling_acc.png new file mode 100644 index 0000000000000000000000000000000000000000..db7c814ae7a38e171d50e91261b3a5105feced8c Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_maxpooling_acc.png differ diff --git a/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_maxpooling_loss.png b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_maxpooling_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..6d61e0332840d1cd301ddd43c47f145db4af2faf Binary files /dev/null and b/results/Omniglot_results/plot_acc_loss/Omniglot_classif/Omniglot_classif_Stochastic_ST_first_conv_binary_maxpooling_loss.png differ diff --git a/utils/.models.py.swp b/utils/.models.py.swp deleted file mode 100644 index 16b26aed3c8c6a6c945ed9ee305c6a750207acd1..0000000000000000000000000000000000000000 Binary files a/utils/.models.py.swp and /dev/null differ diff --git a/utils/__pycache__/activations.cpython-37.pyc b/utils/__pycache__/activations.cpython-37.pyc index 7ce30f8a9fb5541dd2e0ed3962fe9093f8e729fc..81fa9520fe577b60b0f5cf6afbcaf46b15fdcf79 100644 Binary files a/utils/__pycache__/activations.cpython-37.pyc and b/utils/__pycache__/activations.cpython-37.pyc differ diff --git a/utils/__pycache__/callback.cpython-37.pyc b/utils/__pycache__/callback.cpython-37.pyc index 5010144e02de9a73e0be26bf79506af3e3022687..63cd5fb3ccdf8af576be8d40e145510df5fb2863 100644 Binary files a/utils/__pycache__/callback.cpython-37.pyc and b/utils/__pycache__/callback.cpython-37.pyc differ diff --git a/utils/__pycache__/core.cpython-37.pyc b/utils/__pycache__/core.cpython-37.pyc index 7049d3981ebc3a1506b94db6b7b5b6273dd9f122..8db74ae7cca7a5b8361b45d6b846c94b6203cb40 100644 Binary files a/utils/__pycache__/core.cpython-37.pyc and b/utils/__pycache__/core.cpython-37.pyc differ diff --git a/utils/__pycache__/functions.cpython-37.pyc b/utils/__pycache__/functions.cpython-37.pyc index 4cce7b5e69216acde994f9af4fd5a32f51e04848..8ab6343b207852e7ae4b59a501edb9f0e886dd07 100644 Binary files a/utils/__pycache__/functions.cpython-37.pyc and b/utils/__pycache__/functions.cpython-37.pyc differ diff --git a/utils/__pycache__/models.cpython-37.pyc b/utils/__pycache__/models.cpython-37.pyc index 04934ea2e22cf929772ae9e7c4c2caaf0dc96f79..a2d5f886624830909fc27cfccf24a1544b8d196c 100644 Binary files a/utils/__pycache__/models.cpython-37.pyc and b/utils/__pycache__/models.cpython-37.pyc differ diff --git a/utils/__pycache__/training.cpython-37.pyc b/utils/__pycache__/training.cpython-37.pyc index 204c502a497bac6fb09886f199654d0d20b93035..4a410d8c805c5aa41e5ee86e3798635b78dfa180 100644 Binary files a/utils/__pycache__/training.cpython-37.pyc and b/utils/__pycache__/training.cpython-37.pyc differ diff --git a/utils/models.py b/utils/models.py index 11ffc5a911ea6a4ae952fc5f76117fe0ec0e2180..12fc579dde615d32782e50f01363383c60ffbcd8 100644 --- a/utils/models.py +++ b/utils/models.py @@ -137,10 +137,10 @@ def get_my_model_Omniglot(binary, maxpooling=True, mixt=False, stochastic=True, elif mixt: if stochastic: mode = 'Stochastic' - names_model = 'MNIST_Stochastic' + names_model = 'Omniglot_Stochastic' else: mode = 'Deterministic' - names_model = 'MNIST_Deterministic' + names_model = 'Omniglot_Deterministic' if reinforce: estimator = 'REINFORCE' names_model += '_REINFORCE' @@ -153,10 +153,10 @@ def get_my_model_Omniglot(binary, maxpooling=True, mixt=False, stochastic=True, model = MixtNetOmniglotClassification(maxpooling, mode=mode, estimator=estimator) else: - model = NoBinaryNetOmniglotClassification(maxpooling) names_model = 'Omniglot_classif_NonBinaryNet' - mode = None - estimator = None + if maxpooling: + names_model += '_maxpooling' + model = NoBinaryNetOmniglotClassification(maxpooling) return model, names_model @@ -383,7 +383,10 @@ class NoBinaryNetOmniglotClassification(Net): self.batchNorm5 = nn.BatchNorm2d(512) self.act_layer5 = nn.ReLU() - self.fc1 = nn.Linear(4 * 4 * 512, 4096) + if self.maxpooling: + self.fc1 = nn.Linear(3 * 3 * 512, 4096) + else: + self.fc1 = nn.Linear(4 * 4 * 512, 4096) self.act_fc1 = nn.ReLU() self.dropout1 = nn.Dropout(0.5) self.fc2 = nn.Linear(4096, 1623) @@ -485,7 +488,11 @@ class BinaryNetOmniglotClassification(Net): self.act_layer5 = nn.ReLU() - self.fc1 = nn.Linear(4 * 4 * 512, 4096) + if self.maxpooling: + self.fc1 = nn.Linear(3 * 3 * 512, 4096) + else: + self.fc1 = nn.Linear(4 * 4 * 512, 4096) + self.act_fc1 = nn.ReLU() self.dropout1 = nn.Dropout(0.5) self.fc2 = nn.Linear(4096, 1623) @@ -609,7 +616,11 @@ class MixtNetOmniglotClassification(Net): self.act_layer4_binary = StochasticBinaryActivation(estimator=estimator) self.act_layer5_binary = StochasticBinaryActivation(estimator=estimator) - self.fc1 = nn.Linear(4*4*256*2, 4096) + if self.maxpooling: + self.fc1 = nn.Linear(3*3*256*2, 4096) + else: + self.fc1 = nn.Linear(4*4*256*2, 4096) + self.act_fc1 = nn.ReLU() self.dropout1 = nn.Dropout(0.5) self.fc2 = nn.Linear(4096, 1623) @@ -621,34 +632,35 @@ class MixtNetOmniglotClassification(Net): if self.maxpooling: # For binary: - x_layer1_binary = self.act_layer1_binary(((self.maxpool1_binary(self.batchnorm1_binary(self.layer1_binary(x)))), slope)) - x_layer2_binary = self.act_layer2_binary(((self.maxpool2_binary(self.batchnorm2_binary(self.layer2_binary(x_layer1_binary)))), slope)) - x_layer3_binary = self.act_layer3_binary(((self.maxpool3_binary(self.batchnorm3_binary(self.layer3_binary(x_layer2_binary)))), slope)) - x_layer4_binary = self.act_layer4_binary(((self.maxpool4_binary(self.batchnorm4_binary(self.layer4_binary(x_layer3_binary)))), slope)) - x_layer5_binary = self.act_layer5_binary(((self.maxpool5_binary(self.batchnorm5_binary(self.layer5_binary(x_layer4_binary)))), slope)) + x_layer1_binary = self.act_layer1_binary(((self.maxPool1_binary(self.batchNorm1_binary(self.layer1_binary(x)))), slope)) + x_layer2_binary = self.act_layer2_binary(((self.maxPool2_binary(self.batchNorm2_binary(self.layer2_binary(x_layer1_binary)))), slope)) + x_layer3_binary = self.act_layer3_binary(((self.maxPool3_binary(self.batchNorm3_binary(self.layer3_binary(x_layer2_binary)))), slope)) + x_layer4_binary = self.act_layer4_binary(((self.maxPool4_binary(self.batchNorm4_binary(self.layer4_binary(x_layer3_binary)))), slope)) + x_layer5_binary = self.act_layer5_binary(((self.maxPool5_binary(self.batchNorm5_binary(self.layer5_binary(x_layer4_binary)))), slope)) # For No binary: - x_layer1_no_binary = self.act_layer1_no_binary(self.maxpool1_no_binary(self.batchnorm1_no_binary(self.layer1_no_binary(x) * slope))) - x_layer2_no_binary = self.act_layer2_no_binary(self.maxpool2_no_binary(self.batchnorm2_no_binary(self.layer2_no_binary(x_layer1_no_binary) * slope))) - x_layer3_no_binary = self.act_layer3_no_binary(self.maxpool3_no_binary(self.batchnorm3_no_binary(self.layer3_no_binary(x_layer2_no_binary) * slope))) - x_layer4_no_binary = self.act_layer4_no_binary(self.maxpool4_no_binary(self.batchnorm4_no_binary(self.layer4_no_binary(x_layer3_no_binary) * slope))) - x_layer5_no_binary = self.act_layer5_no_binary(self.maxpool5_no_binary(self.batchnorm5_no_binary(self.layer5_no_binary(x_layer4_no_binary) * slope))) + x_layer1_no_binary = self.act_layer1_no_binary(self.maxPool1_no_binary(self.batchNorm1_no_binary(self.layer1_no_binary(x) * slope))) + x_layer2_no_binary = self.act_layer2_no_binary(self.maxPool2_no_binary(self.batchNorm2_no_binary(self.layer2_no_binary(x_layer1_no_binary) * slope))) + x_layer3_no_binary = self.act_layer3_no_binary(self.maxPool3_no_binary(self.batchNorm3_no_binary(self.layer3_no_binary(x_layer2_no_binary) * slope))) + x_layer4_no_binary = self.act_layer4_no_binary(self.maxPool4_no_binary(self.batchNorm4_no_binary(self.layer4_no_binary(x_layer3_no_binary) * slope))) + x_layer5_no_binary = self.act_layer5_no_binary(self.maxPool5_no_binary(self.batchNorm5_no_binary(self.layer5_no_binary(x_layer4_no_binary) * slope))) else: # For binary: - x_layer1_binary = self.act_layer1_binary(((self.batchnorm1_binary(self.layer1_binary(x))), slope)) - x_layer2_binary = self.act_layer2_binary(((self.batchnorm2_binary(self.layer2_binary(x_layer1_binary))), slope)) - x_layer3_binary = self.act_layer3_binary(((self.batchnorm3_binary(self.layer3_binary(x_layer2_binary))), slope)) - x_layer4_binary = self.act_layer4_binary(((self.batchnorm4_binary(self.layer4_binary(x_layer3_binary))), slope)) - x_layer5_binary = self.act_layer5_binary(((self.batchnorm5_binary(self.layer5_binary(x_layer4_binary))), slope)) + x_layer1_binary = self.act_layer1_binary(((self.batchNorm1_binary(self.layer1_binary(x))), slope)) + + x_layer2_binary = self.act_layer2_binary(((self.batchNorm2_binary(self.layer2_binary(x_layer1_binary))), slope)) + x_layer3_binary = self.act_layer3_binary(((self.batchNorm3_binary(self.layer3_binary(x_layer2_binary))), slope)) + x_layer4_binary = self.act_layer4_binary(((self.batchNorm4_binary(self.layer4_binary(x_layer3_binary))), slope)) + x_layer5_binary = self.act_layer5_binary(((self.batchNorm5_binary(self.layer5_binary(x_layer4_binary))), slope)) # For no binary: - x_layer1_no_binary = self.act_layer1_no_binary(self.batchnorm1_no_binary(self.layer1_no_binary(x) * slope)) - x_layer2_no_binary = self.act_layer2_no_binary(self.batchnorm2_no_binary(self.layer2_no_binary(x_layer1_no_binary) * slope)) - x_layer3_no_binary = self.act_layer3_no_binary(self.batchnorm3_no_binary(self.layer3_no_binary(x_layer2_no_binary) * slope)) - x_layer4_no_binary = self.act_layer4_no_binary(self.batchnorm4_no_binary(self.layer4_no_binary(x_layer3_no_binary) * slope)) - x_layer5_no_binary = self.act_layer5_no_binary(self.batchnorm5_no_binary(self.layer5_no_binary(x_layer4_no_binary) * slope)) + x_layer1_no_binary = self.act_layer1_no_binary(self.batchNorm1_no_binary(self.layer1_no_binary(x) * slope)) + x_layer2_no_binary = self.act_layer2_no_binary(self.batchNorm2_no_binary(self.layer2_no_binary(x_layer1_no_binary) * slope)) + x_layer3_no_binary = self.act_layer3_no_binary(self.batchNorm3_no_binary(self.layer3_no_binary(x_layer2_no_binary) * slope)) + x_layer4_no_binary = self.act_layer4_no_binary(self.batchNorm4_no_binary(self.layer4_no_binary(x_layer3_no_binary) * slope)) + x_layer5_no_binary = self.act_layer5_no_binary(self.batchNorm5_no_binary(self.layer5_no_binary(x_layer4_no_binary) * slope)) - x_layer5_binary = x_layer2_binary.view(x_layer5_binary.size(0), -1) - x_layer5_no_binary = x_layer2_no_binary.view(x_layer5_no_binary.size(0), -1) + x_layer5_binary = x_layer5_binary.view(x_layer5_binary.size(0), -1) + x_layer5_no_binary = x_layer5_no_binary.view(x_layer5_no_binary.size(0), -1) x_concatenate = torch.cat((x_layer5_binary, x_layer5_no_binary), 1) x_fc1 = self.dropout1(self.act_fc1(self.fc1(x_concatenate))) x_fc2 = self.fc2(x_fc1)