Neural Network Software

Java Neural Network Class Library

  • Nodes implement the Node interface, with concrete classes including
    • Neuron - generic
    • BackpropagationNode - feedforward node for backpropagation training
    • InputNode - to encapsulate input data in nodes
  • Nodes are connected by WeightedConnections
  • Nodes calculate their net inputs using a class implementing the Adder interface, with LinearAdder as a concrete class
  • Nodes calculate their activations (outputs) using a class implementing the ActivationFunction interface, with LogisticFunction and HyperbolicTangentFunction useful for feedforward networks
  • Nodes calculate errors in their outputs using a class implementing the ErrorFunction interface, typically a class also implementing the ActivationFunction interface where gradient descent is used for training
  • WeightedConnections reflect learning by adjusting their weights using a class implementing the WeightAdjustmentFunction interface, with BackpropagationWeightAdjustment useful for backpropagation training.
I am in the process of extending the library to support a wider variety of network types.
Download the class library source code
View the javadoc API

C++ Software: Feedforward Networks

Download C++ software for backpropagation training of fully connected, multiple-hidden-layer feedforward networks.
This software relies on a node-based object-oriented design. The Node class library, including a parent Node class template and derived classes incorporating feedforward and backpropagation functionality, is included here, and should be useful in constructing other types of neural network software.
The backpropagation program is written as a Windows console application, but removing two or three lines of code will make it platform-independent.
Download backpropagation source code

Coming soon: software using the Node class library discussed above . . .
  • for feedforward networks -
    • using other training algorithms
    • with arbitrary user-defined connectivities
    • with automated network pruning
  • for recurrent networks

About the software . . .

You may use the code as is or with modifications at no charge, as long as proper attribution is given. However, I make no warranties, express or implied, regarding the performance of this code, its freedom from error, or its suitability for use in a given application.
Please contact me with questions or suggestions, or if you would like help modifying or extending the software.

Update July 26, 2002