Home

Awesome

This repository is the official PyTorch implementation of training & evaluation code for ExpandNets: Linear Over-parameterization to Train Compact Convolutional Networks, NeurIPS 2020.

ExpandNets: Linear Over-parameterization to Train Compact Convolutional Networks

Code is in early release and may be subject to change. Please feel free to open an issue in case of questions.

Overview

<!-- ![Framework](framework.png) --> <div align="center"> <img src="framework.png" height="300"> </div> <p align="justify"> Figure 1: <b> ExpandNets</b>. We propose 3 strategies to linearly expand a compact network. An expanded network can then be contracted back to the compact one algebraically, and outperforms training the compact one, even with knowledge distillation. </p>

Image Classification

Here are code for image classification experiments on CIFAR-10, CIFAR-100 and ImageNet.

Details on each experiment are listed in corresponding README.md in each folder.

Dummy test

We provide some toy code to expand a convolutional layer with either standard or depthwise convolutions and contract the expanded layers back.

Code in dummy_test.py is same as it in our supplementary material, which can be run simply.

python dummy_test.py

Citation

@inproceedings{NEURIPS2020_expandnets,
               author = {Guo, Shuxuan and Alvarez, Jose M. and Salzmann, Mathieu},
               booktitle = {Advances in Neural Information Processing Systems},
               editor = {H. Larochelle and M. Ranzato and R. Hadsell and M. F. Balcan and H. Lin},
               pages = {1298--1310},
               publisher = {Curran Associates, Inc.},
               title = {ExpandNets: Linear Over-parameterization to Train Compact Convolutional Networks},
               url = {https://proceedings.neurips.cc/paper/2020/file/0e1ebad68af7f0ae4830b7ac92bc3c6f-Paper.pdf},
               volume = {33},
               year = {2020}
}