On Architectures And Training Techniques For Neural Networks