Machine Learning: Neural networks from scratch