This is my take on implementing a neural network in cpp. Keeping in mind that I learned cpp a couple of weeks prior to starting the project. You can see my programming style adapting and improving (hopefully) throughout the commits.
git submodule init
git submodule update
scripts/build.sh
Catch 2 framework will be used for testing, after some research it seems like the most active and well maintained out of the other options.
To run tests :
source /scripts/tests.sh
I used the pybind11 library to bind some of the classes and functionalities. After building the project you can head to /examples
folder to check out some of the cool mini-projects built in python.
Arbitrary initialization can slow down and sometimes stall completely the convergence process. This slowdown can result in the deeper layers receiving inputs with small variances, which in turn slows down back propagation, and slows down the overall convergence progress.
WEIGHT_INIT | Formula | Activation |
---|---|---|
RANDOM | Sigmoid | |
GLOROT | Relu | |
HE | Relu Softmax |
|
LECUN | Softmax |
This project is licensed under the MIT License - see the LICENSE file for details.