Deep Learning: Theory and Practice