[NOTE: WIP. Not fully tested, there are still bugs present.]
Implementation of a simple neural network using C++
- Dataset - Folder to store the datasets for training
- Neural Network - Core classes for the neural network
- Preprocessing - Utility classes to process the dataset
Credits to https://www.millermattson.com/dave/?p=54 Fair advice, just use Python and the ML libs.
There are two sample datasets. The classic iris dataset https://www.kaggle.com/datasets/uciml/iris and a simplified breast cancer dataset https://www.kaggle.com/datasets/yasserh/breast-cancer-dataset.
- Sepal Length
- Sepal Width
- Petal Length
- Petal Width
- Iris-setosa (1 0 0)
- Iris-versicolor (0 1 0)
- Iris-virginica (0 0 1)
- Radius of Lobes
- Mean of Surface Texture
- Outer Perimeter of Lobes
- Mean Area of Lobes
- Mean of Smoothness Levels
- Mean of Compactness
- Mean of Concavity
- Mean of Cocave Points
- Benign (1 0)
- Malignant (0 1)
- You need either cmake or Visual Studio Code, build configurations are in CMakeLists.txt
From cmd line,
mkdir build
cmake --build "/build"
For VS Code, install the cmake extension and run the auto configure, then click build.
For windows,
Main.exe [config.json]
For linux,
./Main [config.json]
For mac OS, use windows or linux (throw your mac away!)
Adjust hyperparameter in the config.json file. Defaults provided. Set the dataset file and optional token file. Token file to replace string to int. Make sure the topology for input and output layer is matching the input and output for the dataset.
- Export/Import weights
- Batch Learning
- Regularization
- Softmax function for output
- Normalized input
- Split into training, validation and test set