public void ProcessError(FeedForwardNeuralNetwork network, Vector error)
        {
            // TODO calculate total error somewhere
            // create Sensitivity Matrices
            outputSensitivity.SensitivityMatrixFromErrorMatrix(error);

            hiddenSensitivity
            .SensitivityMatrixFromSucceedingLayer(outputSensitivity);

            // calculate weight Updates
            this.CalculateWeightUpdates(outputSensitivity, hiddenLayer
                                        .GetLastActivationValues(), learningRate, momentum);
            this.CalculateWeightUpdates(hiddenSensitivity, hiddenLayer
                                        .GetLastInputValues(), learningRate, momentum);

            // calculate Bias Updates
            this.CalculateBiasUpdates(outputSensitivity, learningRate, momentum);
            this.CalculateBiasUpdates(hiddenSensitivity, learningRate, momentum);

            // update weightsAndBiases
            outputLayer.UpdateWeights();
            outputLayer.UpdateBiases();

            hiddenLayer.UpdateWeights();
            hiddenLayer.UpdateBiases();
        }
        public void SetNeuralNetwork(IFunctionApproximator fapp)
        {
            FeedForwardNeuralNetwork ffnn = (FeedForwardNeuralNetwork)fapp;

            this.hiddenLayer       = ffnn.GetHiddenLayer();
            this.outputLayer       = ffnn.GetOutputLayer();
            this.hiddenSensitivity = new LayerSensitivity(hiddenLayer);
            this.outputSensitivity = new LayerSensitivity(outputLayer);
        }
 public Vector ProcessInput(FeedForwardNeuralNetwork network, Vector input)
 {
     hiddenLayer.FeedForward(input);
     outputLayer.FeedForward(hiddenLayer.GetLastActivationValues());
     return(outputLayer.GetLastActivationValues());
 }