An implementation of standard dense neural networks. The implementation is based on Numpy only and does not need any further libraries. Test units for all classes are provided.
The standard neural net can be viewed as a map f(X) that gives Y. The difference of the predicted Y (typically indicated by a hat) and the real Y is then used to train the model, i.e. find the map f.
In this implementation we add another feature. For invertable maps f we have the inverse map as f^-1. With this map we can use Y to predict X (typically indicated by a hat) and compare it with the real X. This difference can also be used to train the model.
Similarly to auto encoders the predicted values of X and Y are used to train the model. Contrary to auto encoders the same set of weights is used.