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