Neural Network implementation in Numpy and Keras. Batch Normalization, Dropout, L2 Regularization and Optimizers