Title: PRUNING FILTERS FOR EFFICIENT CONVNETS

Abstract: 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.

1. INTRODUCTION:

The ImageNet challenge has led to significant advancements in exploring various architectural choices in CNNs (Russakovsky et al. (2015) ; Krizhevsky et al. (2012) ; Simonyan & Zisserman (2015) ; Szegedy et al. (2015a) ; He et al. (2016) ). The general trend since the past few years has been that the networks have grown deeper, with an overall increase in the number of parameters and convolution operations. These high capacity networks have significant inference costs especially when used with embedded sensors or mobile devices where computational and power resources may be limited. For these applications, in addition to accuracy, computational efficiency and small network sizes are crucial enabling factors (Szegedy et al. (2015b) ). In addition, for web services that provide image search and image classification APIs that operate on a time budget often serving hundreds of thousands of images per second, benefit significantly from lower inference times.

There has been a significant amount of work on reducing the storage and computation costs by model compression (Le Cun et al. (1989) ; Hassibi & Stork (1993) ; Srinivas & Babu (2015) ; Han et al. (2015) ; Mariet & Sra (2016) ). Recently Han et al. (2015; 2016b ) report impressive compression rates on AlexNet (Krizhevsky et al. (2012) ) and VGGNet (Simonyan & Zisserman (2015) ) by pruning weights with small magnitudes and then retraining without hurting the overall accuracy. However, pruning parameters does not necessarily reduce the computation time since the majority of the parameters removed are from the fully connected layers where the computation cost is low, e.g., the fully connected layers of VGG-16 occupy 90% of the total parameters but only contribute less than 1% of the overall floating point operations (FLOP) . They also demonstrate that the convolutional layers can be compressed and accelerated (Iandola et al. (2016) ), but additionally require sparse BLAS libraries or even specialized hardware (Han et al. (2016a) ). Modern libraries that provide speedup using sparse operations over CNNs are often limited (Szegedy et al. (2015a) ; Liu et al. (2015) ) and maintaining sparse data structures also creates an additional storage overhead which can be significant for low-precision weights.

Recent work on CNNs have yielded deep architectures with more efficient design (Szegedy et al. (2015a; b) ; He & Sun (2015) ; He et al. (2016) ), in which the fully connected layers are replaced with average pooling layers (Lin et al. (2013) ; He et al. (2016) ), which reduces the number of parameters significantly. The computation cost is also reduced by downsampling the image at an early stage to reduce the size of feature maps (He & Sun (2015) ). Nevertheless, as the networks continue to become deeper, the computation costs of convolutional layers continue to dominate.

CNNs with large capacity usually have significant redundancy among different filters and feature channels. In this work, we focus on reducing the computation cost of well-trained CNNs by pruning filters. Compared to pruning weights across the network, filter pruning is a naturally structured way of pruning without introducing sparsity and therefore does not require using sparse libraries or any specialized hardware. The number of pruned filters correlates directly with acceleration by reducing the number of matrix multiplications, which is easy to tune for a target speedup. In addition, instead of layer-wise iterative fine-tuning (retraining), we adopt a one-shot pruning and retraining strategy to save retraining time for pruning filters across multiple layers, which is critical for pruning very deep networks. Finally, we observe that even for ResNets, which have significantly fewer parameters and inference costs than AlexNet or VGGNet, still have about 30% of FLOP reduction without sacrificing too much accuracy. We conduct sensitivity analysis for convolutional layers in ResNets that improves the understanding of ResNets.

2. RELATED WORK:

The early work by Le Cun et al. (1989) introduces Optimal Brain Damage, which prunes weights with a theoretically justified saliency measure. Later, Hassibi & Stork (1993) propose Optimal Brain Surgeon to remove unimportant weights determined by the second-order derivative information. Mariet & Sra (2016) reduce the network redundancy by identifying a subset of diverse neurons that does not require retraining. However, this method only operates on the fully-connected layers and introduce sparse connections.

To reduce the computation costs of the convolutional layers, past work have proposed to approximate convolutional operations by representing the weight matrix as a low rank product of two smaller matrices without changing the original number of filters (Denil et al. (2013) ; Jaderberg et al. (2014) ; Zhang et al. (2015b; a) ; Tai et al. (2016) ; Ioannou et al. (2016) ). Other approaches to reduce the convolutional overheads include using FFT based convolutions (Mathieu et al. (2013) ) and fast convolution using the Winograd algorithm (Lavin & Gray (2016) ). Additionally, quantization (Han et al. (2016b) ) and binarization (Rastegari et al. (2016) ; Courbariaux & Bengio (2016) ) can be used to reduce the model size and lower the computation overheads. Our method can be used in addition to these techniques to reduce computation costs without incurring additional overheads.

Several work have studied removing redundant feature maps from a well trained network (Anwar et al. (2015) ; Polyak & Wolf (2015) ). Anwar et al. (2015) introduce a three-level pruning of the weights and locate the pruning candidates using particle filtering, which selects the best combination from a number of random generated masks. Polyak & Wolf (2015) detect the less frequently activated feature maps with sample input data for face detection applications. We choose to analyze the filter weights and prune filters with their corresponding feature maps using a simple magnitude based measure, without examining possible combinations. We also introduce network-wide holistic approaches to prune filters for simple and complex convolutional network architectures.

Concurrently with our work, there is a growing interest in training compact CNNs with sparse constraints (Lebedev & Lempitsky (2016) ; Zhou et al. (2016) ; Wen et al. (2016) ). Lebedev & Lempitsky (2016) leverage group-sparsity on the convolutional filters to achieve structured brain damage, i.e., prune the entries of the convolution kernel in a group-wise fashion. Zhou et al. (2016) add group-sparse regularization on neurons during training to learn compact CNNs with reduced filters. Wen et al. (2016) add structured sparsity regularizer on each layer to reduce trivial filters, channels or even layers. In the filter-level pruning, all above work use 2,1 -norm as a regularizer. Similar to the above work, we use 1 -norm to select unimportant filters and physically prune them. Our fine-tuning process is the same as the conventional training procedure, without introducing additional regularization. Our approach does not introduce extra layer-wise meta-parameters for the regularizer except for the percentage of filters to be pruned, which is directly related to the desired speedup. By employing stage-wise pruning, we can set a single pruning rate for all layers in one stage.

3. PRUNING FILTERS AND FEATURE MAPS:

Let n i denote the number of input channels for the ith convolutional layer and h i /w i be the height/width of the input feature maps. The convolutional layer transforms the input feature maps x i ∈ R ni×hi×wi into the output feature maps x i+1 ∈ R ni+1×hi+1×wi+1 , which are used as input feature maps for the next convolutional layer. This is achieved by applying n i+1 3D filters F i,j ∈ R ni×k×k on the n i input channels, in which one filter generates one feature map. Each filter is composed by n i 2D kernels K ∈ R k×k (e.g., 3 × 3). All the filters, together, constitute the kernel matrix F i ∈ R ni×ni+1×k×k . The number of operations of the convolutional layer is n i+1 n i k 2 h i+1 w i+1 . As shown in Figure 1 , when a filter F i,j is pruned, its corresponding feature map x i+1,j is removed, which reduces n i k 2 h i+1 w i+1 operations. The kernels that apply on the removed feature maps from the filters of the next convolutional layer are also removed, which saves an additional n i+2 k 2 h i+2 w i+2 operations. Pruning m filters of layer i will reduce m/n i+1 of the computation cost for both layers i and i + 1. 

3.1. DETERMINING WHICH FILTERS TO PRUNE WITHIN A SINGLE LAYER:

Our method prunes the less useful filters from a well-trained model for computational efficiency while minimizing the accuracy drop. We measure the relative importance of a filter in each layer by calculating the sum of its absolute weights |F i,j |, i.e., its 1 -norm F i,j 1 . Since the number of input channels, n i , is the same across filters, |F i,j | also represents the average magnitude of its kernel weights. This value gives an expectation of the magnitude of the output feature map. Filters with smaller kernel weights tend to produce feature maps with weak activations as compared to the other filters in that layer. Figure 2 (a) illustrates the distribution of filters' absolute weights sum for each convolutional layer in a VGG-16 network trained on the CIFAR-10 dataset, where the distribution varies significantly across layers. We find that pruning the smallest filters works better in comparison with pruning the same number of random or largest filters (Section 4.4). Compared to other criteria for activation-based feature map pruning (Section 4.5), we find 1 -norm is a good criterion for data-free filter selection.

The procedure of pruning m filters from the ith convolutional layer is as follows:

1. For each filter F i,j , calculate the sum of its absolute kernel weights

s j = ni l=1 |K l |.

2. Sort the filters by s j . 3. Prune m filters with the smallest sum values and their corresponding feature maps. The kernels in the next convolutional layer corresponding to the pruned feature maps are also removed. 4. A new kernel matrix is created for both the ith and i + 1th layers, and the remaining kernel weights are copied to the new model. Relationship to pruning weights Pruning filters with low absolute weights sum is similar to pruning low magnitude weights (Han et al. (2015) ). Magnitude-based weight pruning may prune away whole filters when all the kernel weights of a filter are lower than a given threshold. However, it requires a careful tuning of the threshold and it is difficult to predict the exact number of filters that will eventually be pruned. Furthermore, it generates sparse convolutional kernels which can be hard to accelerate given the lack of efficient sparse libraries, especially for the case of low-sparsity.

Relationship to group-sparse regularization on filters Recent work (Zhou et al. (2016) ; Wen et al. ( 2016)) apply group-sparse regularization ( ni j=1 F i,j 2 or 2,1 -norm) on convolutional filters, which also favor to zero-out filters with small l 2 -norms, i.e. F i,j = 0. In practice, we do not observe noticeable difference between the 2 -norm and the 1 -norm for filter selection, as the important filters tend to have large values for both measures (Appendix 6.1). Zeroing out weights of multiple filters during training has a similar effect to pruning filters with the strategy of iterative pruning and retraining as introduced in Section 3.4.

3.2. DETERMINING SINGLE LAYER'S SENSITIVITY TO PRUNING:

To understand the sensitivity of each layer, we prune each layer independently and evaluate the resulting pruned network's accuracy on the validation set. Figure 2 (b) shows that layers that maintain their accuracy as filters are pruned away correspond to layers with larger slopes in Figure 2(a) . On the contrary, layers with relatively flat slopes are more sensitive to pruning. We empirically determine the number of filters to prune for each layer based on their sensitivity to pruning. For deep networks such as VGG-16 or ResNets, we observe that layers in the same stage (with the same feature map size) have a similar sensitivity to pruning. To avoid introducing layer-wise meta-parameters, we use the same pruning ratio for all layers in the same stage. For layers that are sensitive to pruning, we prune a smaller percentage of these layers or completely skip pruning them.

3.3. PRUNING FILTERS ACROSS MULTIPLE LAYERS:

We now discuss how to prune filters across the network. Previous work prunes the weights on a layer by layer basis, followed by iteratively retraining and compensating for any loss of accuracy (Han et al. (2015) ). However, understanding how to prune filters of multiple layers at once can be useful: 1) For deep networks, pruning and retraining on a layer by layer basis can be extremely time-consuming 2) Pruning layers across the network gives a holistic view of the robustness of the network resulting in a smaller network 3) For complex networks, a holistic approach may be necessary. For example, for the ResNet, pruning the identity feature maps or the second layer of each residual block results in additional pruning of other layers.

To prune filters across multiple layers, we consider two strategies for layer-wise filter selection:

• Independent pruning determines which filters should be pruned at each layer independent of other layers.

• Greedy pruning accounts for the filters that have been removed in the previous layers. This strategy does not consider the kernels for the previously pruned feature maps while calculating the sum of absolute weights.

Figure 3 illustrates the difference between two approaches in calculating the sum of absolute weights.

The greedy approach, though not globally optimal, is holistic and results in pruned networks with higher accuracy especially when many filters are pruned.

Figure 3 : Pruning filters across consecutive layers. The independent pruning strategy calculates the filter sum (columns marked in green) without considering feature maps removed in previous layer (shown in blue), so the kernel weights marked in yellow are still included. The greedy pruning strategy does not count kernels for the already pruned feature maps. Both approaches result in a (n i+1 -1) × (n i+2 -1) kernel matrix.

Figure 4 : Pruning residual blocks with the projection shortcut. The filters to be pruned for the second layer of the residual block (marked as green) are determined by the pruning result of the shortcut projection. The first layer of the residual block can be pruned without restrictions.

For simpler CNNs like VGGNet or AlexNet, we can easily prune any of the filters in any convolutional layer. However, for complex network architectures such as Residual networks (He et al. ( 2016)), pruning filters may not be straightforward. The architecture of ResNet imposes restrictions and the filters need to be pruned carefully. We show the filter pruning for residual blocks with projection mapping in Figure 4 . Here, the filters of the first layer in the residual block can be arbitrarily pruned, as it does not change the number of output feature maps of the block. However, the correspondence between the output feature maps of the second convolutional layer and the identity feature maps makes it difficult to prune. Hence, to prune the second convolutional layer of the residual block, the corresponding projected feature maps must also be pruned. Since the identical feature maps are more important than the added residual maps, the feature maps to be pruned should be determined by the pruning results of the shortcut layer. To determine which identity feature maps are to be pruned, we use the same selection criterion based on the filters of the shortcut convolutional layers (with 1 × 1 kernels). The second layer of the residual block is pruned with the same filter index as selected by the pruning of the shortcut layer.

3.4. RETRAINING PRUNED NETWORKS TO REGAIN ACCURACY:

After pruning the filters, the performance degradation should be compensated by retraining the network. There are two strategies to prune the filters across multiple layers:

1. Prune once and retrain: Prune filters of multiple layers at once and retrain them until the original accuracy is restored. 2. Prune and retrain iteratively: Prune filters layer by layer or filter by filter and then retrain iteratively. The model is retrained before pruning the next layer for the weights to adapt to the changes from the pruning process.

We find that for the layers that are resilient to pruning, the prune and retrain once strategy can be used to prune away significant portions of the network and any loss in accuracy can be regained by retraining for a short period of time (less than the original training time). However, when some filters from the sensitive layers are pruned away or large portions of the networks are pruned away, it may not be possible to recover the original accuracy. Iterative pruning and retraining may yield better results, but the iterative process requires many more epochs especially for very deep networks.

4. EXPERIMENTS:

We prune two types of networks: simple CNNs (VGG-16 on CIFAR-10) and Residual networks (ResNet-56/110 on CIFAR-10 and ResNet-34 on ImageNet). Unlike AlexNet or VGG (on ImageNet) that are often used to demonstrate model compression, both VGG (on CIFAR-10) and Residual networks have fewer parameters in the fully connected layers. Hence, pruning a large percentage of parameters from these networks is challenging. We implement our filter pruning method in Torch7 (Collobert et al. (2011) ). When filters are pruned, a new model with fewer filters is created and the remaining parameters of the modified layers as well as the unaffected layers are copied into the new model. Furthermore, if a convolutional layer is pruned, the weights of the subsequent batch normalization layer are also removed. To get the baseline accuracies for each network, we train each model from scratch and follow the same pre-processing and hyper-parameters as ResNet (He et al. (2016) ). For retraining, we use a constant learning rate 0.001 and retrain 40 epochs for CIFAR-10 and 20 epochs for ImageNet, which represents one-fourth of the original training epochs. Past work has reported up to 3× original training times to retrain pruned networks (Han et al. (2015) ). 2 , VGG-16 on CIFAR-10 consists of 13 convolutional layers and 2 fully connected layers, in which the fully connected layers do not occupy large portions of parameters due to the small input size and less hidden units. We use the model described in Zagoruyko (2015) but add Batch Normalization (Ioffe & Szegedy (2015) ) layer after each convolutional layer and the first linear layer, without using Dropout (Srivastava et al. (2014) ). Note that when the last convolutional layer is pruned, the input to the linear layer is changed and the connections are also removed.

As shown in Figure 2 (b), each of the convolutional layers with 512 feature maps can drop at least 60% of filters without affecting the accuracy. Figure 2 (c) shows that with retraining, almost 90% of the filters of these layers can be safely removed. One possible explanation is that these filters operate on 4 × 4 or 2 × 2 feature maps, which may have no meaningful spatial connections in such small dimensions. For instance, ResNets for CIFAR-10 do not perform any convolutions for feature maps below 8 × 8 dimensions. Unlike previous work (Zeiler & Fergus (2014) ; Han et al. (2015) ), we observe that the first layer is robust to pruning as compared to the next few layers. This is possible for a simple dataset like CIFAR-10, on which the model does not learn as much useful filters as on ImageNet (as shown in Figure . 5 ). Even when 80% of the filters from the first layer are pruned, the number of remaining filters ( 12) is still larger than the number of raw input channels. However, when removing 80% filters from the second layer, the layer corresponds to a 64 to 12 mapping, which may lose significant information from previous layers, thereby hurting the accuracy. With 50% of the filters being pruned in layer 1 and from 8 to 13, we achieve 34% FLOP reduction for the same accuracy. than pruning the second layer. This finding also correlates with the bottleneck block design for deeper ResNets, which first reduces the dimension of input feature maps for the residual layer and then increases the dimension to match the identity mapping.

4.4. COMPARISON WITH PRUNING RANDOM FILTERS AND LARGEST FILTERS:

We compare our approach with pruning random filters and largest filters. As shown in Figure 8 , pruning the smallest filters outperforms pruning random filters for most of the layers at different pruning ratios. For example, smallest filter pruning has better accuracy than random filter pruning for all layers with the pruning ratio of 90%. The accuracy of pruning filters with the largest 1 -norms drops quickly as the pruning ratio increases, which indicates the importance of filters with larger 1 -norms.

Figure 8 : Comparison of three pruning methods for VGG-16 on CIFAR-10: pruning the smallest filters, pruning random filters and pruning the largest filters. In random filter pruning, the order of filters to be pruned is randomly permuted.

4.5. COMPARISON WITH ACTIVATION-BASED FEATURE MAP PRUNING:

The activation-based feature map pruning method removes the feature maps with weak activation patterns and their corresponding filters and kernels (Polyak & Wolf (2015) ), which needs sample data as input to determine which feature maps to prune. A feature map x i+1,j ∈ R wi+1×hi+1 is generated by applying filter F i,j ∈ R ni×k×k to feature maps of previous layer x i ∈ R ni×wi×hi , i.e., x i+1,j = F i,j * x i . Given N randomly selected images {x n 1 } N n=1 from the training set, the statistics of each feature map can be estimated with one epoch forward pass of the N sampled data. Note that we calculate statistics on the feature maps generated from the convolution operations before batch normalization or non-linear activation. We compare our 1 -norm based filter pruning with feature map pruning using the following criteria: 

σ mean-mean (x i,j ) = 1 N N n=1 mean(x n i,j ), σ mean-std (x i,j ) = 1 N N n=1 std(x n i,j ), σ mean-1 (x i,j ) = 1 N N n=1 x n i,j 1 , σ mean-2 (x i,j ) = 1 N N n=1 x n i,j 2 and

var-2 (x i,j ) = var({ x n i,j 2 } N n=1 )

, where mean, std and var are standard statistics (average, standard deviation and variance) of the input. Here, σ var-2 is the contribution variance of channel criterion proposed in Polyak & Wolf (2015) , which is motivated by the intuition that an unimportant feature map has almost similar outputs for the whole training data and acts like an additional bias.

The estimation of the criteria becomes more accurate when more sample data is used. Here we use the whole training set (N = 50, 000 for CIFAR-10) to compute the statistics. The performance of feature map pruning with above criteria for each layer is shown in Figure 9 . Smallest filter pruning outperforms feature map pruning with the criteria σ mean-mean , σ mean-1 , σ mean-2 and σ var-2 . The σ mean-std criterion has better or similar performance to 1 -norm up to pruning ratio of 60%. However, its performance drops quickly after that especially for layers of conv 1, conv 2 and conv 3. We find 1 -norm is a good heuristic for filter selection considering that it is data free.

5. CONCLUSIONS:

Modern CNNs often have high capacity with large training and inference costs. In this paper we present a method to prune filters with relatively low weight magnitudes to produce CNNs with reduced computation costs without introducing irregular sparsity. It achieves about 30% reduction in FLOP for VGGNet (on CIFAR-10) and deep ResNets without significant loss in the original accuracy. Instead of pruning with specific layer-wise hayperparameters and time-consuming iterative retraining, we use the one-shot pruning and retraining strategy for simplicity and ease of implementation. By performing lesion studies on very deep CNNs, we identify layers that are robust or sensitive to pruning, which can be useful for further understanding and improving the architectures.

6. APPENDIX 6.1 COMPARISON WITH 2 -NORM BASED FILTER PRUNING:

We compare 1 -norm with 2 -norm for filter pruning. As shown in Figure 10 , 1 -norm works slightly better than 2 -norm for layer conv 2. There is no significant difference between the two norms for other layers. 

6.2. FLOP AND WALL-CLOCK TIME:

FLOP is a commonly used measure to compare the computation complexities of CNNs. It is easy to compute and can be done statically, which is independent of the underlying hardware and software implementations. Since we physically prune the filters by creating a smaller model and then copy the weights, there are no masks or sparsity introduced to the original dense BLAS operations. Therefore the FLOP and wall-clock time of the pruned model is the same as creating a model with smaller number of filters from scratch.

We report the inference time of the original model and the pruned model on the test set of CIFAR-10 and the validation set of ILSVRC 2012, which contains 10,000 32 × 32 images and 50,000 224 × 224 images respectively. The ILSVRC 2012 dataset is used only for ResNet-34. The evaluation is conducted in Torch7 with Titan X (Pascal) GPU and cuDNN v5.1, using a mini-batch size 128. As shown in Table 3 , the saved inference time is close to the FLOP reduction. Note that the FLOP number only considers the operations in the Conv and FC layers, while some calculations such as Batch Normalization and other overheads are not accounted. 

:



Figures and Tables:

Figure 1: Pruning a filter results in removal of its corresponding feature map and related kernels in the next layer.

Figure 2: (a) Sorting filters by absolute weights sum for each layer of VGG-16 on CIFAR-10. The x-axis is the filter index divided by the total number of filters. The y-axis is the filter weight sum divided by the max sum value among filters in that layer. (b) Pruning filters with the lowest absolute weights sum and their corresponding test accuracies on CIFAR-10. (c) Prune and retrain for each single layer of VGG-16 on CIFAR-10. Some layers are sensitive and it can be harder to recover accuracy after pruning them.

Figure 5: Visualization of filters in the first convolutional layer of VGG-16 trained on CIFAR-10. Filters are ranked by 1 -norm.

Figure 7: Sensitivity to pruning for the residual blocks of ResNet-34.

Figure 9: Comparison of activation-based feature map pruning for VGG-16 on CIFAR-10.

σ

Figure 10: Comparison of 1 -norm and 2 -norm based filter pruning for VGG-16 on CIFAR-10.

Overall results. The best test/validation accuracy during the retraining process is reported. Training a pruned model from scratch performs worse than retraining a pruned model, which may indicate the difficulty of training a network with a small capacity.

Table content: <table><tr><td>Model</td><td colspan="2">Error(%) FLOP</td><td colspan="3">Pruned % Parameters Pruned %</td></tr><tr><td>VGG-16</td><td>6.75</td><td>3.13 × 10 8</td><td/><td>1.5 × 10 7</td></tr><tr><td>VGG-16-pruned-A</td><td>6.60</td><td colspan="2">2.06 × 10 8 34.2%</td><td>5.4 × 10 6</td><td>64.0%</td></tr><tr><td>VGG-16-pruned-A scratch-train</td><td>6.88</td><td/><td/><td/></tr><tr><td>ResNet-56</td><td>6.96</td><td>1.25 × 10 8</td><td/><td>8.5 × 10 5</td></tr><tr><td>ResNet-56-pruned-A</td><td>6.90</td><td colspan="2">1.12 × 10 8 10.4%</td><td>7.7 × 10 5</td><td>9.4%</td></tr><tr><td>ResNet-56-pruned-B</td><td>6.94</td><td colspan="2">9.09 × 10 7 27.6%</td><td>7.3 × 10 5</td><td>13.7%</td></tr><tr><td>ResNet-56-pruned-B scratch-train</td><td>8.69</td><td/><td/><td/></tr><tr><td>ResNet-110</td><td>6.47</td><td>2.53 × 10 8</td><td/><td>1.72 × 10 6</td></tr><tr><td>ResNet-110-pruned-A</td><td>6.45</td><td colspan="2">2.13 × 10 8 15.9%</td><td colspan="2">1.68 × 10 6 2.3%</td></tr><tr><td>ResNet-110-pruned-B</td><td>6.70</td><td colspan="2">1.55 × 10 8 38.6%</td><td colspan="2">1.16 × 10 6 32.4%</td></tr><tr><td colspan="2">ResNet-110-pruned-B scratch-train 7.06</td><td/><td/><td/></tr><tr><td>ResNet-34</td><td>26.77</td><td>3.64 × 10 9</td><td/><td>2.16 × 10 7</td></tr><tr><td>ResNet-34-pruned-A</td><td>27.44</td><td colspan="2">3.08 × 10 9 15.5%</td><td colspan="2">1.99 × 10 7 7.6%</td></tr><tr><td>ResNet-34-pruned-B</td><td>27.83</td><td colspan="2">2.76 × 10 9 24.2%</td><td colspan="2">1.93 × 10 7 10.8%</td></tr><tr><td>ResNet-34-pruned-C</td><td>27.52</td><td colspan="2">3.37 × 10 9 7.5%</td><td colspan="2">2.01 × 10 7 7.2%</td></tr><tr><td>4.1 VGG-16 ON CIFAR-10</td><td/><td/><td/><td/></tr></table>

VGG-16 on CIFAR-10 and the pruned model. The last two columns show the number of feature maps and the reduced percentage of FLOP from the pruned model.

Table content: <table><tr><td colspan="3">layer type wi × hi #Maps</td><td colspan="3">FLOP #Params #Maps FLOP%</td></tr><tr><td>Conv 1</td><td>32 × 32</td><td colspan="2">64 1.8E+06 1.7E+03</td><td>32</td><td>50%</td></tr><tr><td>Conv 2</td><td>32 × 32</td><td colspan="2">64 3.8E+07 3.7E+04</td><td>64</td><td>50%</td></tr><tr><td>Conv 3</td><td>16 × 16</td><td colspan="2">128 1.9E+07 7.4E+04</td><td>128</td><td>0%</td></tr><tr><td>Conv 4</td><td>16 × 16</td><td colspan="2">128 3.8E+07 1.5E+05</td><td>128</td><td>0%</td></tr><tr><td>Conv 5</td><td>8 × 8</td><td colspan="2">256 1.9E+07 2.9E+05</td><td>256</td><td>0%</td></tr><tr><td>Conv 6</td><td>8 × 8</td><td colspan="2">256 3.8E+07 5.9E+05</td><td>256</td><td>0%</td></tr><tr><td>Conv 7</td><td>8 × 8</td><td colspan="2">256 3.8E+07 5.9E+05</td><td>256</td><td>0%</td></tr><tr><td>Conv 8</td><td>4 × 4</td><td colspan="2">512 1.9E+07 1.2E+06</td><td>256</td><td>50%</td></tr><tr><td>Conv 9</td><td>4 × 4</td><td colspan="2">512 3.8E+07 2.4E+06</td><td>256</td><td>75%</td></tr><tr><td>Conv 10</td><td>4 × 4</td><td colspan="2">512 3.8E+07 2.4E+06</td><td>256</td><td>75%</td></tr><tr><td>Conv 11</td><td>2 × 2</td><td colspan="2">512 9.4E+06 2.4E+06</td><td/><td>75%</td></tr><tr><td>Conv 12</td><td>2 × 2</td><td colspan="2">512 9.4E+06 2.4E+06</td><td>256</td><td>75%</td></tr><tr><td>Conv 13</td><td>2 × 2</td><td colspan="2">512 9.4E+06 2.4E+06</td><td>256</td><td>75%</td></tr><tr><td>Linear</td><td>1</td><td colspan="2">512 2.6E+05 2.6E+05</td><td>512</td><td>50%</td></tr><tr><td>Linear</td><td>1</td><td colspan="2">10 5.1E+03 5.1E+03</td><td>10</td><td>0%</td></tr><tr><td>Total</td><td/><td/><td>3.1E+08 1.5E+07</td><td/><td>34%</td></tr></table>

The reduction of FLOP and wall-clock time for inference.

Table content: <table><tr><td>Model</td><td>FLOP</td><td colspan="3">Pruned % Time (s) Saved %</td></tr><tr><td>VGG-16</td><td>3.13 × 10 8</td><td/><td>1.23</td></tr><tr><td>VGG-16-pruned-A</td><td colspan="2">2.06 × 10 8 34.2%</td><td>0.73</td><td>40.7%</td></tr><tr><td>ResNet-56</td><td>1.25 × 10 8</td><td/><td>1.31</td></tr><tr><td>ResNet-56-pruned-B</td><td colspan="2">9.09 × 10 7 27.6%</td><td>0.99</td><td>24.4%</td></tr><tr><td>ResNet-110</td><td>2.53 × 10 8</td><td/><td>2.38</td></tr><tr><td colspan="3">ResNet-110-pruned-B 1.55 × 10 8 38.6%</td><td>1.86</td><td>21.8%</td></tr><tr><td>ResNet-34</td><td>3.64 × 10 9</td><td/><td>36.02</td></tr><tr><td>ResNet-34-pruned-B</td><td colspan="2">2.76 × 10 9 24.2%</td><td>22.93</td><td>28.0%</td></tr></table>

Peer review (iclr2017):
The idea of *pruning where it matters* is great. The authors do a very good job of thinking it through, and taking to the next level by studying pruning across different layers too. Extra points for clarity of the description and good pictures. Even more extra points for actually specifying what spaces are which layers are mapping into which (mathbb symbol - two thumbs up!). The experiments are well done and the results are encouraging. Of course, more experiments would be even nicer, but is it ever not the case? My question/issue - is the proposed pruning criterion proposed? Yes, pruning on the filter level is what in my opinion is the way to go, but I would be curious how the *min sum of weights* criterion compares to other approaches. How does it compare to other pruning criteria? Is it better than *pruning at random*? Overall, I liked the paper.