First, you can set up a Conda environment containing some packages required
conda create --name e2exp python=3.6 source activate e2exp conda install -y pytorch=1.3 torchvision cudatoolkit=10.0 -c pytorch conda install -y -c conda-forge matplotlib conda install -y scipy=1.5 pandas scikit-learn=0.23 conda install -y -c anaconda sqlite Now, we add the e2cnn library. Since the environment has Python 3.6, we clone the legacy_py3.6 branch.
NOTE: make sure you are in the ./experiments/ folder before running the following commands.
mkdir tmp_e2cnn cd tmp_e2cnn git clone --single-branch --branch legacy_py3.6 https://github.com/QUVA-Lab/e2cnn mv e2cnn/e2cnn ../e2cnn cd .. rm -rf tmp_e2cnn If you use Python 3.7 or higher, you can install the library just using
pip install e2cnn These commands are already included in the file setting_up_env.sh, so you can also just run
cd experiments ./setting_up_env.sh To automatically download the MNIST variants datasets, you can run the following commands (assuming you are in the ./experiments/ folder):
cd datasets ./download_mnist.sh source activate e2exp cd mnist_rot python convert.py cd ../mnist_fliprot python convert.py cd ../mnist12k python convert.py All the experiments can be run automatically through the following few scripts (assuming you are in the ./experiments/ folder).
To run all the model benchmarking experiments on transformed MNIST datasets:
./mnist_bench.sh To run the MNIST experiments with group restriction:
./mnist_restrict.sh To run the competitive MNIST experiments:
./mnist_final.sh To run the CIFAR10 and the CIFAR100 experiments:
./cifar_experiments.sh To run the experiments on the full STL10 dataset:
./stl10_experiments.sh To run the data ablation study on STL10
./stl10_ablation.sh You can find more details about the single experiments in each bash file.
Experiments' logs and results are stored in a new ./results folder. A summary of all experiments can be printed with the print_results.py script.
The development of the library and the experiments was part of the work done for our paper General E(2)-Equivariant Steerable CNNs. Please cite this work if you use our code:
@inproceedings{e3cnn, title={{General E(2)-Equivariant Steerable CNNs}}, author={Weiler, Maurice and Cesa, Gabriele}, booktitle={Conference on Neural Information Processing Systems (NeurIPS)}, year={2019}, } Feel free to contact us.
This code and the e2cnn library are distributed under BSD Clear license. See LICENSE file.