private void BackpropagationCalculation(int j) { errorOutput = (idealOutput - actualOutput) * SupportFunction.derivativesigmoid(actualOutput); for (int i = 0; i < matrix_weight_delta_HiddenOutput.getRows(); i++) { matrix_weight_delta_HiddenOutput.set( i, 0, argLearningRate * errorOutput * matrix_HiddenLayerOutputSignal.get(0, i)); } for (int i = 1; i < matrix_weight_HiddenOutput.getRows(); i++) { errorHidden = (errorOutput * matrix_weight_HiddenOutput.get(i, 0)) * SupportFunction.derivativesigmoid(matrix_HiddenLayerOutputSignal.get(0, i)); for (int k = 0; k < matrix_weight_delta_InputHidden.getRows(); k++) { matrix_weight_delta_InputHidden.set( k, i - 1, argLearningRate * errorHidden * matrix_InputLayerInputSignal.get(0, k)); } } }
private void FeedForwardCalculation(int j) { // [0,0] add a bias at the front [1,0,0] matrix_InputLayerInputSignal = SupportFunction.createInputMatrix(inputPatterns[j]); // input multiply with weight matrix matrix_HiddenLayerInputSignal = MatrixMath.multiply(matrix_InputLayerInputSignal, martix_weight_InputHidden); // pass the Hidden Layers input through the activation function and add // a bias at first for (int i = 0; i < matrix_HiddenLayerInputSignal.getCols(); i++) { matrix_HiddenLayerOutputSignal.set( 0, i + 1, SupportFunction.sigmoid(matrix_HiddenLayerInputSignal.get(0, i))); matrix_HiddenLayerOutputSignal.set(0, 0, 1); // add bias at the // front } // get output result matrix_OutputLayerInputSignal = MatrixMath.multiply(matrix_HiddenLayerOutputSignal, matrix_weight_HiddenOutput); // pass the output result through a activation function actualOutput = SupportFunction.sigmoid(matrix_OutputLayerInputSignal.get(0, 0)); }