AI Sourcebook, Part I: Neural Networks
Learn about various neural network algorithms by programming them: freely available source in C/C++, Java, Pascal, Delphi, Visual Basic...
  Related Resources
• Past issues of weekly features
• Kohonen Networks
• Trading Solutions
• NetReality
 
 Elsewhere on the Web
• comp.ai.neural-nets FAQ, Part 5 of 7: Free software
 
 

I often receive questions related to the implementation of various neural network architectures. There are many books and articles explaining the theory behind the particular models, but most of them are difficult to understand and even more difficult to implement. Turning the theory into practical design can be a challenging task, even for the most experienced programmer. Of course, you could use various commercial controls: it may be the way to go on large-scale projects, but it takes the control out of your hands and leave you with less knowledge on the inner workings of NNs. Several Web sites contain documentation, ready-to-(re)use and well documented source code and even complete example applications for a variety of real-world problems. Some of them contain true programming gems, but are difficult to find using standard search engines. So, without further ado, here is a list of sites featuring NN-related source code.

Applets for Neural Networks and Artificial Life
Links to related sites with source for competitive learning methods, backpropagation, neural nets for constraint satisfaction and optimization, simulated annealing, Bayesian networks, etc.

Backprop C++ code
These programs lets you create networks of arbitrary size, and uses a sigmoid function to compute the output of each unit, weights and biases are adjusted with the delta rule as described by the PDP researchers . The net has three layers which are fully interconnected, and uses on-line learning. It was successfully used for character and number recognition.

Binary Hopfield Neural Network Applet
A Hopfield network is an associative memory that works by calculating how much a node is in agreement with the nodes that it is connected to. This Java applet, written by Matt Hill, demonstrates the inner workings of such network.

BPN.class
This XOR Java applet is a little example that implements a 3-input XOR gate with a 3 layered neuronal network.

BSOM
Bayesian Self-Organizing Map Simulation in Java by Akio Utsugi.

Connectionist Models of Cognition
Created by Simon Dennis and Devin McAuley, Connectionist Models of Cognition is a Web-based textbook designed to introduce the key concepts in the area of neural networks. It targets both faculty and students interested in the application of parallel distributed processing models to cognitive phenomena either in a teaching or research capacity. The textbook provides hands-on modeling experience with a variety of standard architectures and the opportunity to begin developing your own models. A background in connectionist theory is not required. The Java-based BrainWave connectionist simulator is embedded within the materials, allowing you to interact with the figures as you work through the exercises. Designed for the introductory cognitive science course on connectionist models at the University of Queensland, BrainWave employs a highly graphical, direct manipulation interface - much like a drawing program - allowing students to focus on the models and not the interface.

DemoGNG
This Java applet developed by Hartmut S. Loos implements several methods related to competitive learning. Here is a list with all available models and distributions.

Freeware and Shareware Tools for implementing Neural Networks and Connectionism
One of the best resources for NN-related topics on the Web, maintained by Pacific Northwest National Laboratory.

jaNet
jaNet package is a Java neural network toolkit. With jaNet you can design, test, train and optimize and save a neural network an external file. You can then include such network in your private application using the jaNet.backprop package.

Java Demos
The Computation and Neural Networks Laboratory at at Wayne State University has developed Java demonstrations of neural net concepts. Includes Support Vector Machine, Self-Organizing Maps, Clustering via Simple Competitive Learning, Perceptron, Backprop, links to other similar sites, etc.

L.A.N.E.
The intent and design of L.A.N.E. is to provide a foundation with which any neural net can be created with an elaborate set of tools that will facilitate the realization of any architecture. Users may structure there applications/uses as a set of primitive operations that can be composed using scripts to best suit the user's needs. Neural networks can be quickly generated and displayed graphically. Besides C/C++, it supports Tcl/Tk.

Neural Networks at your Fingertips
Thanks to Karsten Kutza, this excellent page features source for Adaline network, Backpropagation network, Hopfield model, Bidirectional Associative Memory, Boltzmann machine, Counterpropagation network, Self-Organizing Map and Adaptive Resonance Theory model. You can download the complete package in a comprehensive .zip file. This file will extract to a directory structure, containing the C source, MS Visual C++ 4.0 makefile, Win32 executable, and the generated output for each of the above mentioned programs.

Neural Nets C++ Library
Rodrigo de Salvo Braz wrote some basic classes to make the job of writing some neural network-like models easier. This library defines a set of classes that are essential to neural networks, like pattern, batch and neural net itself. It does not define, though, classes for internal components like units, for example, because the implementations of many models do not need that level and it would make the applications be heavier and more complicated than necessary. However, there are some problems with the library: the backpropagation example does not work in all cases, so we are expecting the necessary changes...

Neural Networks, Connectionist Systems, and Neural Systems
This section at CMU Artificial Intelligence Repository features more than 60 various NN packages and simulators. You'll find source code for networks written in Scheme, Lisp, Pascal and C/C++.

Neural Network in Visual Basic
Small, easy to understand project that implements backpropagation algorithm in VB.

Neural Networks for Face Recognition
This web page provides an implementation (in C++) of the backpropagation algorithm described in Chapter 4 of the textbook Machine Learning. It also includes the dataset discussed in Section 4.7 of the book, containing over 600 face images.

Perceptron
This Java applet is an example of a basic perceptron which can recognize whether a pattern belongs to one group or another.

Source code for Neural Networks - Site1, Site2
These Russian sites contain source code for various programs implementing neural network models, along with the "good old fashioned AI" (inference engines, expert systems, NLU) and Genetic Algorithm examples in Pascal, Delphi, VB and C.

Neural Net (Python, Java)
The purpose of this project is to create a neural net that can be trained on reading the numbers 1 through 4. The numbers are placed in a 5 x 4 grid of 0s and 1s, and also "grayscale' values of 0.1 through 0.9.

The Pattern Recognition Basis of AI
This excellent site offers programs with a command line (non-GUI) interface. The source is suitable for Unix and DOS, there are 16-bit DOS binaries (uses hardware floating point) for all the programs and a Windows 3.1 binary for backprop. The newest Unix version requires the free Tcl/Tk package. GUI based versions of backprop for Unix and Windows plus non-GUI versions of backprop, k-nearest-neighbor, LVQ1, DSM, simple clustering, ART I, feed-forward counter propagation, interactive activation network, a simple BAM, Hopfield and Boltzman networks and the linear pattern classifier.

XOR
Backpropagation example from Generation 5: XOR Net in C++ with several excellent accompanying essays.