Efficient Deep Learning: From Theory to Practice