C++ Kohonen Neural Network Library


Kohonen neural network library is a set of classes and functions for design, train and use Kohonen network (self organizing map).


  • Seweryn Habdank-Wojewódzki View Seweryn Habdank-Wojewódzki's profile on LinkedIn
  • Janusz Rybarski


Kohonen neural networks are used in data mining process and for knowledge discovery in databases. As all neural networks it has to be trained using training data. The Kohonen neural network library is a set of classes and functions to design, train and calculates results from Kohonen neural network known as self organizing map. The library is written in modern C++, so it is highly configurable and extendable. There is defined container for neurons. Also there are available topologies of the network, which are important in training process. Neurons could be constructed by the parameterization of the template classes. Then network could be created. Next training algorithm could be created from some parts, as parameterization of template functors. Example file is included to the library, which could show user how to construct all parts and get proper result - trained and ready to work Kohonen network. In the library there are ready to use WTA and WTM training algorithms.

Library requirements:

  • C++ Standard Library - generally distributed with compiler.
  • Boost Library ver. 1.33 or higher.
    • Core of library needs:
      • boost::bind,
      • boost::function,
      • boost::type_traits
    • Demonstration program uses:
      • boost::program_options



Description of demo:

Demo of this library try to read text file with data. File format should be that fields are separated by the tab or space character. And every record it is one line of data. As default network contains 5 rows by 5 columns matrix, so there are 25 neurons. When program is running than initial weights are generated, after that different kinds of learning procedures are used to prepare results. Results are printed into the standard output. The results are trained weights. If there is 5x5 neurons results are stored in the sequences of the weights by 25 weights. Weights can be printed with respect to the number of them in one sequence.


New BSD License.

Parallel projects:

Acknowledgements to:

Phil Bass, Wit Jakuczun


habdank no_spam AT gmail DOT com
janusz DOT rybarski no_spam AT gmail DOT com
Remove "no_spam" from e-mail addresses, please.
Support This Project Valid HTML 4.01 Transitional Valid CSS!