private void computeTotalGradient( Gradients totalGradients, Gradients partialGradients, SetOfIOPairs trainingSet) { // na zaciatku sa inicializuju gradienty (total) totalGradients.resetGradients(); // partialGradients.resetGradients(); // Gradients totalGradients = new Gradients(this); // Gradients partialGradients = new Gradients(this); /***/ for (SetOfIOPairs.IOPair pair : trainingSet.pairs) { // pre kazdy par trenovacej mnoziny // partialGradients = computeGradient(pair.inputs, pair.outputs); computeGradient(partialGradients, pair.inputs, pair.outputs); for (int il = this.numberOfLayers() - 1; il >= 1; il--) { // pre vsetky vrstvy okrem poslednej NeuralLayer currentLayer = this.getLayer(il); for (int in = 0; in < currentLayer.numberOfNeurons(); in++) { // pre vsetky neurony na currentLayer // upravime gradient prahov : totalGradients.incrementThreshold(il, in, partialGradients.getThreshold(il, in)); for (int ii = 0; ii < currentLayer.lowerLayer().numberOfNeurons(); ii++) { // pre vsetky vstupy totalGradients.incrementWeight(il, in, ii, partialGradients.getWeight(il, in, ii)); } } } // end for layer } // end foreach // return totalGradients; } // end method