C# Class Encog.Neural.Prune.PruneSelective

Prune a neural network selectively. This class allows you to either add or remove neurons from layers of a neural network. You can also randomize or stimulate neurons. No provision is given for removing an entire layer. Removing a layer requires a totally new set of weights between the layers before and after the removed one. This essentially makes any remaining weights useless. At this point you are better off just creating a new network of the desired dimensions.
Mostrar archivo Open project: encog/encog-silverlight-core Class Usage Examples

Public Methods

Method Description
ChangeNeuronCount ( int layer, int neuronCount ) : void

Change the neuron count for the network. If the count is increased then a zero-weighted neuron is added, which will not affect the output of the neural network. If the neuron count is decreased, then the weakest neuron will be removed. This method cannot be used to remove a bias neuron.

DetermineNeuronSignificance ( int layer, int neuron ) : double

Determine the significance of the neuron. The higher the return value, the more significant the neuron is.

Prune ( int targetLayer, int neuron ) : void

Prune one of the neurons from this layer. Remove all entries in this weight matrix and other layers. This method cannot be used to remove a bias neuron.

PruneSelective ( BasicNetwork network ) : System

Construct an object prune the neural network.

RandomizeNeuron ( double low, double high, int targetLayer, int neuron ) : void
RandomizeNeuron ( int targetLayer, int neuron ) : void

Assign random values to the network. The range will be the min/max of existing neurons.

StimulateNeuron ( double percent, int targetLayer, int neuron ) : void

Stimulate the specified neuron by the specified percent. This is used to randomize the weights and bias values for weak neurons.

StimulateWeakNeurons ( int layer, int count, double percent ) : void

Stimulate weaker neurons on a layer. Find the weakest neurons and then randomize them by the specified percent.

Private Methods

Method Description
DecreaseNeuronCount ( int layer, int neuronCount ) : void

Internal function to decrease the neuron count of a layer.

FindWeakestNeurons ( int layer, int count ) : int[]

Find the weakest neurons on a layer. Considers both weight and bias.

IncreaseNeuronCount ( int targetLayer, int neuronCount ) : void

Internal function to increase the neuron count. This will add a zero-weight neuron to this layer.

RandomizeNeuron ( int targetLayer, int neuron, bool useRange, double low, double high, bool usePercent, double percent ) : void

Used internally to randomize a neuron. Usually called from randomizeNeuron or stimulateNeuron.

ReindexNetwork ( ) : void

Creat new index values for the network.

Method Details

ChangeNeuronCount() public method

Change the neuron count for the network. If the count is increased then a zero-weighted neuron is added, which will not affect the output of the neural network. If the neuron count is decreased, then the weakest neuron will be removed. This method cannot be used to remove a bias neuron.
public ChangeNeuronCount ( int layer, int neuronCount ) : void
layer int The layer to adjust.
neuronCount int The new neuron count for this layer.
return void

DetermineNeuronSignificance() public method

Determine the significance of the neuron. The higher the return value, the more significant the neuron is.
public DetermineNeuronSignificance ( int layer, int neuron ) : double
layer int The layer to query.
neuron int The neuron to query.
return double

Prune() public method

Prune one of the neurons from this layer. Remove all entries in this weight matrix and other layers. This method cannot be used to remove a bias neuron.
public Prune ( int targetLayer, int neuron ) : void
targetLayer int The neuron to prune. Zero specifies the first neuron.
neuron int The neuron to prune.
return void

PruneSelective() public method

Construct an object prune the neural network.
public PruneSelective ( BasicNetwork network ) : System
network Encog.Neural.Networks.BasicNetwork The network to prune.
return System

RandomizeNeuron() public method

public RandomizeNeuron ( double low, double high, int targetLayer, int neuron ) : void
low double The low-end of the range.
high double The high-end of the range.
targetLayer int The target layer.
neuron int The target neuron.
return void

RandomizeNeuron() public method

Assign random values to the network. The range will be the min/max of existing neurons.
public RandomizeNeuron ( int targetLayer, int neuron ) : void
targetLayer int The target layer.
neuron int The target neuron.
return void

StimulateNeuron() public method

Stimulate the specified neuron by the specified percent. This is used to randomize the weights and bias values for weak neurons.
public StimulateNeuron ( double percent, int targetLayer, int neuron ) : void
percent double The percent to randomize by.
targetLayer int The layer that the neuron is on.
neuron int The neuron to randomize.
return void

StimulateWeakNeurons() public method

Stimulate weaker neurons on a layer. Find the weakest neurons and then randomize them by the specified percent.
public StimulateWeakNeurons ( int layer, int count, double percent ) : void
layer int The layer to stimulate.
count int The number of weak neurons to stimulate.
percent double The percent to stimulate by.
return void