Java Neural Network Class Library
I am in the process of extending the library to support a wider variety of network types.
- 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.
Download the class library source code
View the javadoc API
Download C++ software for backpropagation training of fully connected, multiple-hidden-layer feedforward networks.
C++ Software: 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
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.
About the software . . .
Please contact me with questions or suggestions, or if you would like help modifying or extending the software.