The vision for this project is to build algorithms for the automatic adaptation of neural networks based solely on the observed stream of experience in order to obtain a compact representation. The focus here is on two main components: Generation/discovery and Testing/pruning of the features. Currently, there are two active research directions in this project:
1) Feature Decorrelator: When rapidly generating many features, we end up with many highly correlated features. The challenge here is to detect and remove these redundant features online and in a scalable way. Additionally, maintaining the model performance after removing these features is not trivial since these features often tend to have high utilities (high contributions to the output).
2) Feature Tester: Feature testing here involves quickly and accurately evaluating the features to determine which ones we should keep and which we can replace. Most existing pruning strategies are unsuitable here since they are too expensive or unsuitable to run online.
In order to run this project, you'll need the following things installed:
- Install python packages:
pip install -r requirements.txt
- Setup Pybind11 and Libtorch:
bash setup.sh
- Compile:
bash compile.sh
include/
,src/
: Implementation of network primitives and pruning strategies in C++model_pretrainers/
: Pytorch code for pretraining and saving MNIST modelscfg/
: Config filesdata/
: Dataset files are saved hereresults/
: Notebooks for plotting and visualization of resultstests/
: Misc teststrained_models/
: Pretrained models are saved herepybind_interface/
: Python bindings for the experiment and logging code
Firstly, make sure that your database is up and running. Place the .my.cnf
file in the project's root directory. All the results are logged in the mariadb database. For an example on how to fetch and plot these, see the results/
folder.
Run the experiments using:
./GNTDecorrelation --config cfg/<config_file> --run ::: {0..<num_rums>}
Obtain some pretrained MNIST models using:
python model_pretrainers/train_binary_mnist.py --config cfg/<config_file>
Evaluate the pruners on these pretrained models using:
./BinaryMNISTPruning --config cfg/<config_file> --run ::: {0..<num_runs>}
See cfg/
for example of some config files.