コード例 #1
0
 /**
  * Backpropogates the training data to all the incomming synapses.
  *
  * @since 1.0
  */
 @Override
 public void backPropagate() {
   this.calculateDeltaTrain();
   // TODO fix this bad typing
   /*
   //step thru source synapses and make them learn their new weight.
   for(final Synapse currentSynapse : this.getBrain().getInEdges(this))
   {
   	final Neuron sourceNeuron = currentSynapse.getSourceNode();
   	if( sourceNeuron instanceof BackpropNeuron )
   	{
   		final BackpropNeuron sourceBackpropNeuron = (BackpropNeuron) sourceNeuron;
   		// TODO instead of only working on SimpleBackpropNeuron perhaps make deltaTrain part of a Backprop synapse
   		if( sourceBackpropNeuron instanceof SimpleBackpropNeuron )
   			((SimpleBackpropNeuron) sourceBackpropNeuron).deltaTrainDestinations.put(currentSynapse, this.deltaTrain);
   		currentSynapse.setWeight(currentSynapse.getWeight() + (this.deltaTrain * this.learningRate * currentSynapse.getInput()));
   	}
   }
   */
   // step thru source synapses and make them learn their new weight.
   for (final Object currentSynapse : this.getBrain().getInEdges(this)) {
     final Neuron sourceNeuron = (Neuron) ((Synapse) currentSynapse).getSourceNode();
     if (sourceNeuron instanceof BackpropNeuron) {
       final BackpropNeuron sourceBackpropNeuron = (BackpropNeuron) sourceNeuron;
       // TODO instead of only working on SimpleBackpropNeuron perhaps make deltaTrain part of a
       // Backprop synapse
       if (sourceBackpropNeuron instanceof SimpleBackpropNeuron)
         ((SimpleBackpropNeuron) sourceBackpropNeuron)
             .deltaTrainDestinations.put(((Synapse) currentSynapse), this.deltaTrain);
       ((Synapse) currentSynapse)
           .setWeight(
               ((Synapse) currentSynapse).getWeight()
                   + (this.deltaTrain
                       * this.learningRate
                       * ((Synapse) currentSynapse).getInput()));
     }
   }
 }