/** * 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())); } } }