  We introduce a DNN training technique that learns only a fraction of the full
parameter set without incurring an accuracy penalty. To do this, our algorithm
constrains the total number of weights updated during backpropagation to those
with the highest total gradients. The remaining weights are not tracked, and
their initial value is regenerated at every access to avoid storing them in
memory. This can dramatically reduce the number of off-chip memory accesses
during both training and inference, a key component of the energy needs of DNN
accelerators. By ensuring that the total weight diffusion remains close to that
of baseline unpruned SGD, networks pruned using our technique are able to
retain state-of-the-art accuracy across network architectures -- including
networks previously identified as difficult to compress, such as Densenet and
WRN. With ResNet18 on ImageNet, we observe an 11.7$\times$ weight reduction
with no accuracy loss, and up to 24.4$\times$ with a small accuracy impact.
