This repository provides the implementation of the method proposed in our paper Discriminative Layer Pruning for Convolutional Neural Networks.
- Scikit-learn
- Keras (Recommended version 2.1.2)
- Tensorflow (Recommended version 1.3.0 or 1.9)
- Python 3
main.py provides an example of our layer pruning approach.
Our method takes two parameters:
- Number of components of Partial Least Squares (see line 178 in main.py)
- Block index (see line 180 in main.py). The lower the block index the higher the FLOPs reduction and accuracy degradation.
The table below show the comparison between our method with existing pruning methods. Negative values in accuracy denote improvement regarding the original, unpruned, network. Please check our paper for more detailed results.
ResNet56 on Cifar-10
Method | FLOPs ↓ (%) | Accuracy ↓ (percentage points) |
---|---|---|
Jordao et al. | 52.56 | -0.62 |
He et al. | 50.00 | 0.90 |
Ours | 30.00 | 0.98 |
Ours + Pruning Filters | 62.69 | 0.91 |
Please cite our paper in your publications if it helps your research.
@article{Jordao::2020,
author = {Artur Jordao,
Maiko Lie and
William Robson Schwartz},
title = {Discriminative Layer Pruning for Convolutional Neural Networks},
journal = {IEEE Journal of Selected Topics in Signal Processing},
year = {2020},
}