Exemplo n.º 1
0
  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