Papers › Pruning Filters for Efficient ConvNets

Pruning Filters for Efficient ConvNets

31 Aug 2016arXiv:1608.08710archive 2025-07-28

Hao Li, Asim Kadav, Igor Durdanovic, Hanan Samet, Hans Peter Graf

The success of CNNs in various applications is accompanied by a significant increase in the computation and parameter storage costs. Recent efforts toward reducing these overheads involve pruning and compressing the weights of various layers without hurting original accuracy. However, magnitude-based pruning of weights reduces a significant number of parameters from the fully connected layers and may not adequately reduce the computation costs in the convolutional layers due to irregular sparsity in the pruned networks. We present an acceleration method for CNNs, where we prune filters from CNNs that are identified as having a small effect on the output accuracy. By removing whole filters in the network together with their connecting feature maps, the computation costs are reduced significantly. In contrast to pruning weights, this approach does not result in sparse connectivity patterns. Hence, it does not need the support of sparse convolution libraries and can work with existing efficient BLAS libraries for dense matrix multiplications. We show that even simple filter pruning techniques can reduce inference costs for VGG-16 by up to 34% and ResNet-110 by up to 38% on CIFAR10 while regaining close to the original accuracy by retraining the networks.

PaperPDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="1608.08710")

Code

Syntology Ran 20 of 36 code samples harvested from 11 repositories linked to this paper; 16 have no recorded run. Of those that ran: 1 ran · honoured contract; 1 ran · violated contract; 11 ran · our draft was wrong; 3 ran · fixture could not drive it; 4 ran with no contract checked.

By repository: community (archive-listed): 36 samples from 11 repositories, 20 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

21 repositories listed; official and paper-mentioned ones first.

Adlik/model_optimizer mentioned on GitHubpytorchApache-2.0 report
AlumLuther/PruningFilters mentioned on GitHubpytorch report
AnishDelft/ModelCompression mentioned on GitHubpytorch report
VainF/Torch-Pruning mentioned on GitHubpytorchMIT report
cailinhang/2018-Graduation-Project mentioned on GitHubtorch report
guoxiaolu/model_compression mentioned on GitHubpytorch report
he-y/filter-pruning-geometric-median mentioned on GitHubpytorch report
lehduong/ginp mentioned on GitHubpytorchMIT report
lehduong/kesi mentioned on GitHubpytorchMIT report
marcoancona/TorchPruner mentioned on GitHubpytorch report
matthew-mcateer/Keras_pruning mentioned on GitHubtf report
midasklr/yolov5prune mentioned on GitHubpytorch report
mingsun-tse/regularization-pruning mentioned on GitHubpytorch report
mvpzhangqiu/yolov5prune mentioned on GitHubpytorch report
prerakmody/CS4180-DL mentioned on GitHubpytorch report
siyuan0/pytorch_model_prune mentioned on GitHubpytorch report
PaddlePaddle/PaddleOCR paddleApache-2.0 report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

36 samples harvested; 20 ran; 1 honoured the contract we drafted; 16 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

1ran · honoured contract
1ran · violated contract
11ran · our draft was wrong
3ran · fixture could not drive it
4ran
16unverified

Licence: 20 of the 36 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from 11 repositories linked to this paper, official or community; each sample names its own and says which. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

Mask he-y/filter-pruning-geometric-median/VGG_cifar/pruning_cifar_vgg.py community (archive-listed) ran no licence file found · pointer only · 05b9fa9dad6ede01 · report
Pruner marcoancona/TorchPruner/torchpruner/pruner/pruner.py community (archive-listed) ran MIT (permissive) · 5d815bc1bdb41c80 · report
arg_nonzero_min AnishDelft/ModelCompression/src/pruning/weightPruning/methods.py community (archive-listed) ran · fixture could not drive it fingerprinted no licence file found · pointer only · 7b447ef653b6fd6a · report
channels_index EstherBear/implementation-of-pruning-filters/prune.py community (archive-listed) ran · our draft was wrong fingerprinted no licence file found · pointer only · 152f217a1bf86018 · report
conv3x3 lehduong/ginp/cifar/filter_pruning/models/preresnet.py community (archive-listed) ran · our draft was wrong MIT (permissive) · fac5364e2f53c6db · report
filter_prune AnishDelft/ModelCompression/src/pruning/weightPruning/methods.py community (archive-listed) ran · our draft was wrong no licence file found · pointer only · 2af2848312c7f731 · report
get_filtered_idx guoxiaolu/model_compression/inner_func.py community (archive-listed) ran · violated contract fingerprinted no licence file found · pointer only · 41598b11a124fdd7 · report
get_new_conv EstherBear/implementation-of-pruning-filters/prune.py community (archive-listed) ran · fixture could not drive it no licence file found · pointer only · b2d26cb03ffebe9d · report
get_new_linear EstherBear/implementation-of-pruning-filters/prune.py community (archive-listed) ran · our draft was wrong no licence file found · pointer only · e4917253b4ffc6a8 · report
get_new_norm EstherBear/implementation-of-pruning-filters/prune.py community (archive-listed) ran · our draft was wrong no licence file found · pointer only · 6f17e5800058ad1a · report
layer_eval siyuan0/pytorch_model_prune/prune.py community (archive-listed) ran · our draft was wrong fingerprinted MIT (permissive) · 0a177233e25de4aa · report
obtain_bn_mask mvpzhangqiu/yolov5prune/prune_utils.py community (archive-listed) ran · fixture could not drive it no licence file found · pointer only · fbb0ce8d88ebc264 · report
obtain_bn_mask midasklr/yolov5prune/prune_utils.py community (archive-listed) ran · our draft was wrong no licence file found · pointer only · a391dad107f2f625 · report
prune_one_filter AnishDelft/ModelCompression/src/pruning/weightPruning/methods.py community (archive-listed) ran · our draft was wrong no licence file found · pointer only · 05588a795fc38ffd · report
prune_rate AnishDelft/ModelCompression/src/pruning/weightPruning/methods.py community (archive-listed) ran · honoured contract no licence file found · pointer only · ef13bc5f154a40bc · report
pruned_conv2d siyuan0/pytorch_model_prune/prune.py community (archive-listed) ran fingerprinted MIT (permissive) · 73a3fe3ae770b450 · report
quick_filter_prune_v2 prerakmody/CS4180-DL/src/pruning/weightPruning/methods.py community (archive-listed) ran · our draft was wrong no licence file found · pointer only · d02925cbefd3694f · report
select_channels EstherBear/implementation-of-pruning-filters/prune.py community (archive-listed) ran · our draft was wrong no licence file found · pointer only · 769b77d02a742c60 · report
unwrap_model siyuan0/pytorch_model_prune/prune.py community (archive-listed) ran · our draft was wrong MIT (permissive) · f21b8549dee8b153 · report
zero_padding siyuan0/pytorch_model_prune/prune.py community (archive-listed) ran MIT (permissive) · be78e984674fdadb · report
MetaPruner mingsun-tse/regularization-pruning/pruner/l1_pruner.py community (archive-listed) unverified no licence file found · pointer only · 841ab10a9e621c3e · report
OptimizerPruner marcoancona/TorchPruner/torchpruner/pruner/pruner.py community (archive-listed) unverified MIT (permissive) · b5096faa1be476c7 · report
Pruner mingsun-tse/regularization-pruning/pruner/l1_pruner.py community (archive-listed) unverified no licence file found · pointer only · eb229809230a2c98 · report
_weights_init mingsun-tse/regularization-pruning/pruner/l1_pruner.py community (archive-listed) unverified no licence file found · pointer only · 8dbc5200982548c5 · report
accuracy lehduong/ginp/imagenet/l1-norm-pruning/ensemble_finetune.py community (archive-listed) unverified MIT (permissive) · 4d3faaaa1c706b0b · report
accuracy lehduong/ginp/imagenet/weight-level/main_finetune.py community (archive-listed) unverified MIT (permissive) · 80752954f2a868b8 · report
count_model_param_flops siyuan0/pytorch_model_prune/prune.py community (archive-listed) unverified MIT (permissive) · ee1b9c63cd1f32ce · report
create_l1_norm_mask lehduong/ginp/imagenet/l1-norm-pruning/residualprune.py community (archive-listed) unverified MIT (permissive) · 7835366b1d8d0c63 · report
get_conv_zero_param lehduong/ginp/imagenet/weight-level/main_finetune.py community (archive-listed) unverified MIT (permissive) · 89d6cfa68bf25631 · report
prune_model siyuan0/pytorch_model_prune/prune.py community (archive-listed) unverified MIT (permissive) · 3adf7e9d6eff8e41 · report
prune_net EstherBear/implementation-of-pruning-filters/prune.py community (archive-listed) unverified no licence file found · pointer only · 85de63fef209d807 · report
prune_resnet EstherBear/implementation-of-pruning-filters/prune.py community (archive-listed) unverified no licence file found · pointer only · 85dea7b7b4ee357b · report
prune_vgg EstherBear/implementation-of-pruning-filters/prune.py community (archive-listed) unverified no licence file found · pointer only · fd290760eb0c67b9 · report
validate lehduong/ginp/imagenet/l1-norm-pruning/ensemble_finetune.py community (archive-listed) unverified MIT (permissive) · 15487f2b7b36c9cc · report
validate lehduong/ginp/imagenet/l1-norm-pruning/main_finetune.py community (archive-listed) unverified MIT (permissive) · 1dcc89e293ab6570 · report
validate lehduong/ginp/imagenet/weight-level/main_finetune.py community (archive-listed) unverified MIT (permissive) · 61e4d0bc645ebb64 · report

Tasks

Image ClassificationNetwork Pruning

Results from the paper archive 2025-07-28

TaskDatasetModelMetricValueRank at snapshotLeaderboardReport
Network Pruning ImageNet ResNet50-2.3 GFLOPs Accuracy 78.79 #1 of 16 Archive leaderboard report
Network Pruning ImageNet ResNet50-2.3 GFLOPs GFLOPs 2.335 #1 of 16 Archive leaderboard report
Network Pruning ImageNet ResNet50-2.3 GFLOPs MParams 14.811 #1 of 16 Archive leaderboard report
Network Pruning ImageNet ResNet50-1.5 GFLOPs Accuracy 78.07 #2 of 16 Archive leaderboard report
Network Pruning ImageNet ResNet50-1.5 GFLOPs GFLOPs 1.635 #2 of 16 Archive leaderboard report
Network Pruning ImageNet ResNet50-1.5 GFLOPs MParams 10.511 #2 of 16 Archive leaderboard report
Network Pruning ImageNet ResNet50-1G FLOPs Accuracy 76.376 #8 of 16 Archive leaderboard report
Network Pruning ImageNet ResNet50-1G FLOPs GFLOPs 1.075 #8 of 16 Archive leaderboard report
Network Pruning ImageNet ResNet50-1G FLOPs MParams 6.954 #8 of 16 Archive leaderboard report

Ranks are positions in the archive's leaderboards as they stood at the 2025-07-28 snapshot. Results published since then are not among these rows, so a rank here is not a current standing.

Methods

Introduced by this paper: Pruning

ConvolutionPruning

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections