Distributed Training and Optimization Of Neural Networks