All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Improving documentation and CMake building.
- (Global) Documentation of the library usage
- (Global) Documentation of the paper simulation
- (Global) Tag export (Doxygen) of plasticity features
- (Global) Tag related to Eigen and OpenCV library
- (Global) Add missing C++ submodules in Doxygen documentation
- (C++|Python) Add Lorenzo method for convergence estimation
- (C++|Python) Add Lorenzo method for weight decay
- (C++|Python) Add Lorenzo method for weights normalization in BCM model
- (C++|Python) Add Lorenzo method for theta moving average update in BCM model
- (Global) Split the documentation building via CMake into submodule
- (Global) Move the sphinx config file to CMake configuration file
- (Global) Move the setup to CMake configuration file
- (C++|Python) Move the Lebesgue norm to only the Hopfield model
- (Python) Add typing in function signatures
- (Global) Move the relative import of Sphinx to root folder of the project
- (Global) Improve the documentation building
- (Global) Improve the Cython building via CMake
- (C++) Fix documentation of activation functions
- (Global) Fix math issue in documentation build updating Sphinx (as suggested by Riccardo)
- (C++) Check the convergence method of the models (theta seems to reach a value equal to the dataset size if the neuron achieved a stable state)
- (C++) Improve the list of testing functions
- (Python) Implement a series of tests for the package CI (see coverage)
- (Global) Upload the package to PyPi at the first release
- (Global) Improve/Update the documentation of the project's theory on Read-the-Docs
- (Global) Fix Doxygen error on lambda function as default argument
Porting of the full algorithm to the Eigen library.
- (C++) MNIST dataset loader class
- (C++) Configuration file parser for the simulation
- (C++) Add the OpenCV support for the weights visualization
- (C++) Add (custom)
bwr
OpenCV colormap - (C++) Add examples for BCM and Hopfield usage with the MNIST dataset
- (C++) Add version check utility in the examples
- (C++) Add fit callback support for the visualization of the learning weights
- (C++) Add a brief list of test for the BCM and Hopfield models
- (C++) Move the activation function namespace to
transfer_t
- (C++) Move the optimizer function namespace to
optimizer_t
- (C++) Move the weights initialization function namespace to
weights_init_t
- (C++) Move OpenMP support to Eigen
- (C++) Remove useless utility templates and functions for the timing and printing
- (Global) Split the github-actions for the C++ support into different configuration files
- (C++) Revision of the BCM algorithm with the Eigen support
- (C++) Revision of the Hopfield algorithm with the Eigen support
- (C++) Revision of the Optimization algorithms with the Eigen support
- (Global) Improve the README documentation
- (Global) Minor fix on the Doxygen documentation
- (Global) Add FindNumPy CMake module from scikit-build (ref. FindNumPy.cmake)
- (C++) Check the convergence method of the models
- (C++) Improve the list of testing functions
- (Python) Implement a series of tests for the package CI (see coverage)
- (Global) Upload the package to PyPi at the first release
- (Global) Improve/Update the documentation of the project's theory on Read-the-Docs
- (Global) Improve README documentation about the models' theories
- (Global) Fix Doxygen error on lambda function as default argument
First version of the algorithm.
- First C++ version of the BCM algorithm
- Add cython wrap for the Python support
- Add scikit-learn compatibility for the classes in the model sub-package
- Add sphinx + doxygen support for the documentation
- Add an utility sub-package for common functions
- Add setup installation of the package (serial)
- Add first version of CI using travis and appveyor
- Add first version of code evaluation with codebeat and codacy
- Add optimizer object for the convergency of the training
- Add inpainting examples using BCM and Hopfield models
- Add classifier examples using BCM and Hopfield models
- Testing the performances of both the models on the MNIST dataset (without supervised part!!)
- Add multiple initializers for the weights matrix since we notice different convergency behaviour changing the initial conditions
- Implement the class inheritance in the BCM and Hopfield models
- Use a set of Activation classes for improve the model testing
- The stop criteria is based on the theta array for the BCM model and on the xx array in the Hopfield model
- The stop criteria monitors the absolute difference despite the relative difference
- Use the numpy einsum function for an optimized implementation of the GEMM
- Use the Eigen3 library for the matrix inversion in the C++ implementation of the BCM
- Use the OpenMP support for a parallel computation of the training
- Add stopping criteria in both the C++ and Python versions
- Implement a series of tests for the package CI (see coverage)
- Upload the package to PyPi at the first release