In-Memory Computing for Machine Learning and Deep Learning