The Encog Project

org.encog.neural.networks
Class BasicNetwork

java.lang.Object
  extended by org.encog.neural.networks.BasicNetwork
All Implemented Interfaces:
java.io.Serializable, ContextClearable, Network, EncogPersistedObject

public class BasicNetwork
extends java.lang.Object
implements java.io.Serializable, Network, ContextClearable

This class implements a neural network. This class works in conjunction the Layer classes. Layers are added to the BasicNetwork to specify the structure of the neural network. The first layer added is the input layer, the final layer added is the output layer. Any layers added between these two layers are the hidden layers. The network structure is stored in the structure member. It is important to call: network.getStructure().finalizeStructure(); Once the neural network has been completely constructed.

See Also:
Serialized Form

Field Summary
static java.lang.String TAG_INPUT
          Tag used for the input layer.
static java.lang.String TAG_OUTPUT
          Tag used for the output layer.
 
Constructor Summary
BasicNetwork()
          Construct an empty neural network.
BasicNetwork(NeuralLogic logic)
          Construct a basic network using the specified logic.
 
Method Summary
 void addLayer(Layer layer)
          Add a layer to the neural network.
 void addLayer(Layer layer, SynapseType type)
          Add a layer to the neural network.
 double calculateError(NeuralDataSet data)
          Calculate the error for this neural network.
 int calculateNeuronCount()
          Calculate the total number of neurons in the network across all layers.
 void clearContext()
          Clear any data from any context layers.
 void clearLayerTags()
          Remove all layer tags.
 java.lang.Object clone()
          Return a clone of this neural network.
 NeuralData compute(NeuralData input)
          Compute the output for a given input to the neural network.
 NeuralData compute(NeuralData input, NeuralOutputHolder useHolder)
          Compute the output for a given input to the neural network.
 Persistor createPersistor()
          Create a persistor for this object.
static int determineWinner(NeuralData output)
          Determine which member of the output is the winning neuron.
 boolean equals(BasicNetwork other)
          Compare the two neural networks.
 boolean equals(BasicNetwork other, int precision)
          Determine if this neural network is equal to another.
 java.lang.String getDescription()
           
 Layer getLayer(java.lang.String tag)
          Get the layer specified by the tag.
 java.util.Map<java.lang.String,Layer> getLayerTags()
           
 NeuralLogic getLogic()
           
 java.lang.String getName()
           
 java.util.Map<java.lang.String,java.lang.String> getProperties()
           
 double getPropertyDouble(java.lang.String name)
          Get the specified property as a double.
 long getPropertyLong(java.lang.String name)
          Get the specified property as a long.
 java.lang.String getPropertyString(java.lang.String name)
          Get the specified property as a string.
 NeuralStructure getStructure()
           
 java.util.Collection<java.lang.String> getTags(Layer layer)
          Get a list of all of the tags on a specific layer.
 int getWeightMatrixSize()
           
 int hashCode()
          Generate a hash code.
 void reset()
          Reset the weight matrix and the thresholds.
 void setDescription(java.lang.String theDescription)
          Set the description for this object.
 void setLogic(NeuralLogic logic)
          Set the type of logic this network should use.
 void setName(java.lang.String name)
          Set the name of this object.
 void setProperty(java.lang.String name, double d)
          Set a property as a double.
 void setProperty(java.lang.String name, long l)
          Set a property as a long.
 void setProperty(java.lang.String name, java.lang.String value)
          Set a property as a double.
 void tagLayer(java.lang.String tag, Layer layer)
          Tag a layer.
 java.lang.String toString()
           
 int winner(NeuralData input)
          Determine the winner for the specified input.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

TAG_INPUT

public static final java.lang.String TAG_INPUT
Tag used for the input layer.

See Also:
Constant Field Values

TAG_OUTPUT

public static final java.lang.String TAG_OUTPUT
Tag used for the output layer.

See Also:
Constant Field Values
Constructor Detail

BasicNetwork

public BasicNetwork()
Construct an empty neural network.


BasicNetwork

public BasicNetwork(NeuralLogic logic)
Construct a basic network using the specified logic.

Parameters:
logic - The logic to use with the neural network.
Method Detail

determineWinner

public static int determineWinner(NeuralData output)
Determine which member of the output is the winning neuron.

Parameters:
output - The output from the neural network.
Returns:
The winning neuron.

addLayer

public void addLayer(Layer layer)
Add a layer to the neural network. The first layer added is the input layer, the last layer added is the output layer. This layer is added with a weighted synapse.

Specified by:
addLayer in interface Network
Parameters:
layer - The layer to be added.

addLayer

public void addLayer(Layer layer,
                     SynapseType type)
Add a layer to the neural network. If there are no layers added this layer will become the input layer. This function automatically updates both the input and output layer references.

Specified by:
addLayer in interface Network
Parameters:
layer - The layer to be added to the network.
type - What sort of synapse should connect this layer to the last.

calculateError

public double calculateError(NeuralDataSet data)
Calculate the error for this neural network. The error is calculated using root-mean-square(RMS).

Specified by:
calculateError in interface Network
Parameters:
data - The training set.
Returns:
The error percentage.

calculateNeuronCount

public int calculateNeuronCount()
Calculate the total number of neurons in the network across all layers.

Specified by:
calculateNeuronCount in interface Network
Returns:
The neuron count.

clearContext

public void clearContext()
Clear any data from any context layers.

Specified by:
clearContext in interface ContextClearable

clearLayerTags

public void clearLayerTags()
Remove all layer tags.


clone

public java.lang.Object clone()
Return a clone of this neural network. Including structure, weights and threshold values. This is a deep copy.

Specified by:
clone in interface Network
Overrides:
clone in class java.lang.Object
Returns:
A cloned copy of the neural network.

compute

public NeuralData compute(NeuralData input)
Compute the output for a given input to the neural network.

Specified by:
compute in interface Network
Parameters:
input - The input to the neural network.
Returns:
The output from the neural network.

compute

public NeuralData compute(NeuralData input,
                          NeuralOutputHolder useHolder)
Compute the output for a given input to the neural network. This method provides a parameter to specify an output holder to use. This holder allows propagation training to track the output from each layer. If you do not need this holder pass null, or use the other compare method.

Specified by:
compute in interface Network
Parameters:
input - The input provide to the neural network.
useHolder - Allows a holder to be specified, this allows propagation training to check the output of each layer.
Returns:
The results from the output neurons.

createPersistor

public Persistor createPersistor()
Create a persistor for this object.

Specified by:
createPersistor in interface Network
Specified by:
createPersistor in interface EncogPersistedObject
Returns:
The newly created persistor.

equals

public boolean equals(BasicNetwork other)
Compare the two neural networks. For them to be equal they must be of the same structure, and have the same matrix values.

Specified by:
equals in interface Network
Parameters:
other - The other neural network.
Returns:
True if the two networks are equal.

equals

public boolean equals(BasicNetwork other,
                      int precision)
Determine if this neural network is equal to another. Equal neural networks have the same weight matrix and threshold values, within a specified precision.

Specified by:
equals in interface Network
Parameters:
other - The other neural network.
precision - The number of decimal places to compare to.
Returns:
True if the two neural networks are equal.

getDescription

public java.lang.String getDescription()
Specified by:
getDescription in interface Network
Specified by:
getDescription in interface EncogPersistedObject
Returns:
The description for this object.

getLayer

public Layer getLayer(java.lang.String tag)
Get the layer specified by the tag.

Parameters:
tag - The tag.
Returns:
The layer associated with that tag.

getLayerTags

public java.util.Map<java.lang.String,Layer> getLayerTags()
Returns:
The map of all layer tags.

getLogic

public NeuralLogic getLogic()
Returns:
The logic used by this network.

getName

public java.lang.String getName()
Specified by:
getName in interface Network
Specified by:
getName in interface EncogPersistedObject
Returns:
the name

getProperties

public java.util.Map<java.lang.String,java.lang.String> getProperties()
Returns:
A map of all properties.

getPropertyDouble

public double getPropertyDouble(java.lang.String name)
Get the specified property as a double.

Parameters:
name - The name of the property.
Returns:
The property as a double.

getPropertyLong

public long getPropertyLong(java.lang.String name)
Get the specified property as a long.

Parameters:
name - The name of the specified property.
Returns:
The value of the specified property.

getPropertyString

public java.lang.String getPropertyString(java.lang.String name)
Get the specified property as a string.

Parameters:
name - The name of the property.
Returns:
The value of the property.

getStructure

public NeuralStructure getStructure()
Specified by:
getStructure in interface Network
Returns:
Get the structure of the neural network. The structure allows you to quickly obtain synapses and layers without traversing the network.

getTags

public java.util.Collection<java.lang.String> getTags(Layer layer)
Get a list of all of the tags on a specific layer.

Parameters:
layer - The layer to check.
Returns:
A collection of the layer tags.

getWeightMatrixSize

public int getWeightMatrixSize()
Specified by:
getWeightMatrixSize in interface Network
Returns:
The size of the matrix.

hashCode

public int hashCode()
Generate a hash code.

Specified by:
hashCode in interface Network
Overrides:
hashCode in class java.lang.Object
Returns:
THe hash code.

reset

public void reset()
Reset the weight matrix and the thresholds.

Specified by:
reset in interface Network

setDescription

public void setDescription(java.lang.String theDescription)
Set the description for this object.

Specified by:
setDescription in interface Network
Specified by:
setDescription in interface EncogPersistedObject
Parameters:
theDescription - The description.

setLogic

public void setLogic(NeuralLogic logic)
Set the type of logic this network should use.

Parameters:
logic - The logic used by the network.

setName

public void setName(java.lang.String name)
Description copied from interface: EncogPersistedObject
Set the name of this object.

Specified by:
setName in interface Network
Specified by:
setName in interface EncogPersistedObject
Parameters:
name - the name to set

setProperty

public void setProperty(java.lang.String name,
                        double d)
Set a property as a double.

Parameters:
name - The name of the property.
d - The value of the property.

setProperty

public void setProperty(java.lang.String name,
                        long l)
Set a property as a long.

Parameters:
name - The name of the property.
l - The value of the property.

setProperty

public void setProperty(java.lang.String name,
                        java.lang.String value)
Set a property as a double.

Parameters:
name - The name of the property.
value - The value of the property.

tagLayer

public void tagLayer(java.lang.String tag,
                     Layer layer)
Tag a layer.

Parameters:
tag - The tag name.
layer - THe layer to tag.

toString

public java.lang.String toString()
Specified by:
toString in interface Network
Overrides:
toString in class java.lang.Object
Returns:
Convert this object to a string.

winner

public int winner(NeuralData input)
Determine the winner for the specified input. This is the number of the winning neuron.

Specified by:
winner in interface Network
Parameters:
input - The input patter to present to the neural network.
Returns:
The winning neuron.

The Encog Project