Fundamentals of Deep Learning and Neural Networks