Exemplo n.º 1
0
 public Vector ProcessInput(IFunctionApproximator network,
                            Vector input)
 {
     hiddenLayer.FeedForward(input);
     outputLayer.FeedForward(hiddenLayer.GetLastActivationValues());
     return(outputLayer.GetLastActivationValues());
 }
        public void SetNeuralNetwork(IFunctionApproximator fapp)
        {
            FeedForwardDeepNeuralNetwork ffnn = fapp as FeedForwardDeepNeuralNetwork;

            if (null == ffnn)
            {
                throw new Exception("Only supporting FeedForwardDeepNeuralNetwork at this stage.");
            }

            this.hiddenLayers = new Layer[ffnn.GetNumberOfHiddenLayers()];
            for (int i = 0; i < hiddenLayers.Length; ++i)
            {
                this.hiddenLayers[i] = ffnn.GetHiddenLayer(i);
            }

            this.outputLayer = ffnn.GetOutputLayer();

            this.hiddenSensitivities = new LayerSensitivity[ffnn.GetNumberOfHiddenLayers()];
            for (int i = 0; i < hiddenLayers.Length; ++i)
            {
                this.hiddenSensitivities[i] = new LayerSensitivity(ffnn.GetHiddenLayer(i));
            }

            this.outputSensitivity = new LayerSensitivity(outputLayer);
        }
Exemplo n.º 3
0
        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(IFunctionApproximator network, Vector input)
        {
            hiddenLayers[0].FeedForward(input);

            for (int i = 1; i < hiddenLayers.Length; ++i)
            {
                hiddenLayers[i].FeedForward(hiddenLayers[i - 1].GetLastActivationValues());
            }

            outputLayer.FeedForward(hiddenLayers[hiddenLayers.Length - 1].GetLastActivationValues());

            return(outputLayer.GetLastActivationValues());
        }
        public void ProcessError(IFunctionApproximator network,
                                 Vector error)
        {
            // TODO calculate total error somewhere
            // create Sensitivity Matrices
            outputSensitivity.SensitivityMatrixFromErrorMatrix(error);

            hiddenSensitivities[hiddenSensitivities.Length - 1].SensitivityMatrixFromSucceedingLayer(outputSensitivity);
            for (int i = hiddenSensitivities.Length - 2; i >= 0; --i)
            {
                hiddenSensitivities[i].SensitivityMatrixFromSucceedingLayer(hiddenSensitivities[i + 1]);
            }

            // calculate weight Updates
            CalculateWeightUpdates(outputSensitivity, hiddenLayers[hiddenLayers.Length - 1].GetLastActivationValues(),
                                   learningRate, momentum);
            for (int i = hiddenLayers.Length - 1; i > 0; --i)
            {
                CalculateWeightUpdates(hiddenSensitivities[i], hiddenLayers[i - 1].GetLastActivationValues(),
                                       learningRate, momentum);
            }

            CalculateWeightUpdates(hiddenSensitivities[0], hiddenLayers[0].GetLastInputValues(), learningRate, momentum);

            // calculate Bias Updates
            CalculateBiasUpdates(outputSensitivity, learningRate, momentum);
            for (int i = hiddenLayers.Length - 1; i >= 0; --i)
            {
                CalculateBiasUpdates(hiddenSensitivities[i], learningRate, momentum);
            }

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

            for (int i = hiddenLayers.Length - 1; i >= 0; --i)
            {
                hiddenLayers[i].UpdateWeights();
                hiddenLayers[i].UpdateBiases();
            }
        }
Exemplo n.º 6
0
        public void ProcessError(IFunctionApproximator network,
                                 Vector error)
        {
            // TODO calculate total error somewhere
            // create Sensitivity Matrices
            outputSensitivity.SensitivityMatrixFromErrorMatrix(error);

            hiddenSensitivity.SensitivityMatrixFromSucceedingLayer(outputSensitivity);

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

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

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

            hiddenLayer.UpdateWeights();
            hiddenLayer.UpdateBiases();
        }