<p>Binarization techniques are effective algorithms which allow to constrain both the parameters and the activations of a network to have binary values. Obviously the precision loss may degrade a bit the final performances, but the binary representation reduces a lot the resource requirements of the network.</p>
<p>For instance, you can have a look at these works:</p>
<ul>
<li><a href="http://papers.nips.cc/paper/6573-binarized-neural-networks.pdf" rel="nofollow noreferrer">Binarized Neural Networks</a></li>
<li><a href="https://arxiv.org/pdf/1602.02830" rel="nofollow noreferrer">Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or −1</a></li>
<li><a href="https://arxiv.org/pdf/1603.05279.pdf" rel="nofollow noreferrer">XNOR-Net: ImageNet Classification Using Binary
Convolutional Neural Networks</a></li>
</ul>
<p>which released their code.</p>
Suggest some useful techniques to reduce the size of a CNN architecture?
<p>Context: I am going to start training a CNN to classify a data set. This CNN will have to be deployed for a real world application. So a forward propagation through this CNN has to be fast. Most of the CNN architectures I have read cannot run without a GPU and need a lot of costly resources to be deployed.</p>

<p>Question:
Now I know one particular technique that's quite useful for reducing the size of a CNN architecture: Downsize the image using cubic interpolation ( Cubic interpolation helps improve certain image features like edges ). This helps reduce the number of convolution layers as well as the filter size thus reducing the overall parameters in a CNN by quite a lot. I wanted to know if there are other techniques which can make a CNN smaller so that it can be realistically deployed.</p>