Pruning for Efficient Deep Learning: From CNNs to Generative Models