Deep $k$-Means: Re-Training and Parameter Sharing with Harder Cluster
  Assignments for Compressing Deep Convolutions
  The current trend of pushing CNNs deeper with convolutions has created a
pressing demand to achieve higher compression gains on CNNs where convolutions
dominate the computation and parameter amount (e.g., GoogLeNet, ResNet and Wide
ResNet). Further, the high energy consumption of convolutions limits its
deployment on mobile devices. To this end, we proposed a simple yet effective
scheme for compressing convolutions though applying k-means clustering on the
weights, compression is achieved through weight-sharing, by only recording $K$
cluster centers and weight assignment indexes. We then introduced a novel
spectrally relaxed $k$-means regularization, which tends to make hard
assignments of convolutional layer weights to $K$ learned cluster centers
during re-training. We additionally propose an improved set of metrics to
estimate energy consumption of CNN hardware implementations, whose estimation
results are verified to be consistent with previously proposed energy
estimation tool extrapolated from actual hardware measurements. We finally
evaluated Deep $k$-Means across several CNN models in terms of both compression
ratio and energy consumption reduction, observing promising results without
incurring accuracy loss. The code is available at
https://github.com/Sandbox3aster/Deep-K-Means
