Dropout is a widely used regularization technique that helps improve the generalization capabilities of deep neural networks. In this paper, we introduce k-dropout, a novel generalization of the standard dropout technique. In k-dropout, instead of resampling dropout masks at every training iteration, masks are reused multiple times according to new
├── k_dropout
│ ├── datasets.py
│ ├── experiment_helpers.py
│ ├── modules.py
│ ├── networks.py
│ └── training_helpers.py
├── notebooks
├── scripts
├── sweep_configs
├── README.md
├── ensemble_subnet_analysis.py
├── pooled_subnet_analysis.py
├── sequential_subnet_experiment.py
├── standard_subnet_experiment.py
├── test_modules.py
├── train_net.py
├── wandb_helpers.py
└── writeup.pdfThe k_dropout directory contains the python code for creating and running models with k-dropout layers.
k_dropout/datasets.pycontains code for loading and preprocessing the MNIST and CIFAR-10 datasets.k_dropout/experiment_helpers.pycontains functions for creating pytorch datasets and k-dropout modules with specific hyperparameters. These are called in the experiment files at the project root.k_dropout/modules.pycontains the implementation of the sequential and pooled k-dropout pytorch modules.k_dropout/networks.pycontains functions for creating various pytorch models using our custom layers including a generalmake_net()and thePoolDropoutLensNetwhich can be used to control and analyze the subnetworks in a pooled k-dropout model.k_dropout/training_helpers.pycontains functions for training and testing a model on dataset using specific hyperparameters and logging the data to weights and biases.
The notebooks directory contains the notebooks for plotting results. notebooks/paper_plots.ipynb specifically contains the final plots for the write-up.
The scripts and sweep_configs directories contain bash scripts and yaml files with the configuration for running experiments using weights and biases.
The project root contains various files for running experiments.
ensemble_subnet_analysis.pyis the target for the pooled k-dropout ensemble experiment.pooled_subnet_analysis.pyis the target for the experiment tracking the performance of subnets in a pooled k-dropout model.sequential_subnet_experiment.pyis the target for the experiment tracking the pserformance of subnets in a sequential k-dropout model.standard_subnet_experiment.pyis the target for the experiment training the performance of subnets in a standard or no dropout model.test_modules.pycontains functions for verifying the correct implementation of the sequential and pooled modules.train_net.pyis the target for experiments that involve training a model with a set dropout module and hyperparameters and is used for the parameter sweeps.wandb_helpers.pycontains functions that store additional information in the runs on weights and biases.
The project writeup can be found in writeup.pdf.