Principles of Riemannian Geometry in Neural Networks