Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Neural Network Library
[go: Go Back, main page]

libneural home page

Well, for what it's worth, this is the libneural home page. Follow this link to get it. The LSM entry is here. Old versions are available in this directory

New!

24/9/2001: A new example - a tic-tac-toe / noughts and crosses game has been added to the examples directory. Thanks to Adrian Bowyer for this! This, plus a couple of minor bug fixes, constitutes version 1.0.3.

23/3/2000: A preliminary verison of a tutorial for libneural is now available. It was co-written by Philippe Crochat and Daniel Franklin - you can get the English version here and the French version (not available yet) here. You can download a .tar.gz of the documentation which includes a high-quality PostScript version (suitable for printing) from here. Enjoy!

What is it?

libneural is an extremely tiny library for creating a software three layer backpropagation neural network. This is useful for a very wide variety of pattern recognition and classification problems. It is written in C++, based on the standard algorithm with NO fancy features like bias terms or momentum (which I tried and found to be pretty useless for my application anyway). A good reference is "Neural Networks Algorithms, Applications, and Programming Techniques" by James A. Freeman and David M. Skapura (Addison-Wesley, 1991). Note that I implemented the algorithm they describe, but did NOT use any of their pseudocode.

You need a C++ compiler (g++ 2.7.2 or later should be OK) and a UNIX-like system. I recommend GNU/Linux, FreeBSD, NetBSD or OpenBSD, but there is no reason that it would fail to compile (perhaps with some tweaking) under NT or '95/'98 as well. The latter option would probably require Cygwin32 as a minimum. If anyone wants to contribute a port to these OSs please send me the patches etc...

So what will it do for you? Well, what it did for me is solve the very tricky problem of classifying the spectra of the notes produced by a musical instrument. For example, suppose we have a note "A" in the second octave from the bottom on a classical guitar. This note has a frequency (ideally) of 220 Hz. Of course, it is definitely not a pure sinusoid, there are harmonics present in quite large quantities. To ensure that my music analysis software (my thesis project) correctly identifies this note (rather than thinking that there was a chord of A2, A3, A4 and possibly others), the output of my DSP front end goes into a trained neural network for classification. If the right harmonic rations are observed, the only output to be activated will be the A2 output. Of course, all of this depends on the quality of the training...

Here is another example. Suppose we have trained the network to recognise the letters A-Z in a noisy environment (where noise is in the form of a uniformly distributed random number added to the bitmap of the letter). When presented with a letter + noise, the network will attempt to classify that letter on the basis of its training. This example is included in the source code distribution.

Please send me feedback, patches, etc... I will implement a few other features such as cumulative backpropagation etc in a later release if anyone is interested. Also planned is a bit of a speedup - at the moment it is optimised for readability rather than speed :-)

The library is released under the terms of the GNU LGPL so you can do with it what you will, other than restrict the freedom of the source code. It is Copyright (C) 1998, 1999, 2000, 2001 Daniel Franklin. Of course, you can modify and redistribute, but you must distribute the source as well, under the GNU LGPL.


Send me some e-mail: my address is d.franklin@computer.org