Inheritance: FunctionApproximator
示例#1
0
        public void processError(FeedForwardNeuralNetwork 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();

        }
示例#2
0
        public Vector processInput(FeedForwardNeuralNetwork network, Vector input)
        {

            hiddenLayer.feedForward(input);
            outputLayer.feedForward(hiddenLayer.getLastActivationValues());
            return outputLayer.getLastActivationValues();
        }
示例#3
0
        public void processError(FeedForwardNeuralNetwork 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();
        }
示例#4
0
        public void setNeuralNetwork(FunctionApproximator fapp)
        {
            FeedForwardNeuralNetwork ffnn = (FeedForwardNeuralNetwork)fapp;

            this.hiddenLayer       = ffnn.getHiddenLayer();
            this.outputLayer       = ffnn.getOutputLayer();
            this.hiddenSensitivity = new LayerSensitivity(hiddenLayer);
            this.outputSensitivity = new LayerSensitivity(outputLayer);
        }
        public void testFeedForwardAndBAckLoopWorks()
        {
            // example 11.14 of Neural Network Design by Hagan, Demuth and Beale
            Matrix hiddenLayerWeightMatrix = new Matrix(2, 1);
            hiddenLayerWeightMatrix.set(0, 0, -0.27);
            hiddenLayerWeightMatrix.set(1, 0, -0.41);

            Vector hiddenLayerBiasVector = new Vector(2);
            hiddenLayerBiasVector.setValue(0, -0.48);
            hiddenLayerBiasVector.setValue(1, -0.13);

            Vector input = new Vector(1);
            input.setValue(0, 1);

            Matrix outputLayerWeightMatrix = new Matrix(1, 2);
            outputLayerWeightMatrix.set(0, 0, 0.09);
            outputLayerWeightMatrix.set(0, 1, -0.17);

            Vector outputLayerBiasVector = new Vector(1);
            outputLayerBiasVector.setValue(0, 0.48);

            Vector error = new Vector(1);
            error.setValue(0, 1.261);

            double learningRate = 0.1;
            double momentumFactor = 0.0;
            FeedForwardNeuralNetwork ffnn = new FeedForwardNeuralNetwork(
                    hiddenLayerWeightMatrix, hiddenLayerBiasVector,
                    outputLayerWeightMatrix, outputLayerBiasVector);
            ffnn.setTrainingScheme(new BackPropLearning(learningRate,
                    momentumFactor));
            ffnn.processInput(input);
            ffnn.processError(error);

            Matrix finalHiddenLayerWeights = ffnn.getHiddenLayerWeights();
            Assert.AreEqual(-0.265, finalHiddenLayerWeights.get(0, 0), 0.001);
            Assert.AreEqual(-0.419, finalHiddenLayerWeights.get(1, 0), 0.001);

            Vector hiddenLayerBias = ffnn.getHiddenLayerBias();
            Assert.AreEqual(-0.475, hiddenLayerBias.getValue(0), 0.001);
            Assert.AreEqual(-0.1399, hiddenLayerBias.getValue(1), 0.001);

            Matrix finalOutputLayerWeights = ffnn.getOutputLayerWeights();
            Assert.AreEqual(0.171, finalOutputLayerWeights.get(0, 0), 0.001);
            Assert.AreEqual(-0.0772, finalOutputLayerWeights.get(0, 1), 0.001);

            Vector outputLayerBias = ffnn.getOutputLayerBias();
            Assert.AreEqual(0.7322, outputLayerBias.getValue(0), 0.001);
        }
        public void testDataSetPopulation()
        {
            DataSet irisDataSet = DataSetFactory.getIrisDataSet();
            Numerizer numerizer = new IrisDataSetNumerizer();
            NNDataSet innds = new IrisNNDataSet();

            innds.createExamplesFromDataSet(irisDataSet, numerizer);

            NNConfig config = new NNConfig();
            config.setConfig(FeedForwardNeuralNetwork.NUMBER_OF_INPUTS, 4);
            config.setConfig(FeedForwardNeuralNetwork.NUMBER_OF_OUTPUTS, 3);
            config.setConfig(FeedForwardNeuralNetwork.NUMBER_OF_HIDDEN_NEURONS, 6);
            config.setConfig(FeedForwardNeuralNetwork.LOWER_LIMIT_WEIGHTS, -2.0);
            config.setConfig(FeedForwardNeuralNetwork.UPPER_LIMIT_WEIGHTS, 2.0);

            FeedForwardNeuralNetwork ffnn = new FeedForwardNeuralNetwork(config);
            ffnn.setTrainingScheme(new BackPropLearning(0.1, 0.9));

            ffnn.trainOn(innds, 10);

            innds.refreshDataset();
            ffnn.testOnDataSet(innds);
        }
示例#7
0
 public Vector processInput(FeedForwardNeuralNetwork network, Vector input)
 {
     hiddenLayer.feedForward(input);
     outputLayer.feedForward(hiddenLayer.getLastActivationValues());
     return(outputLayer.getLastActivationValues());
 }