Exemple #1
0
        public void Execute(IExampleInterface app)
        {
            this.app = app;
            SetupInput();
            var pattern = new ART1Pattern();

            pattern.InputNeurons  = INPUT_NEURONS;
            pattern.OutputNeurons = OUTPUT_NEURONS;
            var network = (ART1)pattern.Generate();

            for (int i = 0; i < PATTERN.Length; i++)
            {
                var dataIn  = new BiPolarMLData(input[i]);
                var dataOut = new BiPolarMLData(OUTPUT_NEURONS);
                network.Compute(dataIn, dataOut);
                if (network.HasWinner)
                {
                    app.WriteLine(PATTERN[i] + " - " + network.Winner);
                }
                else
                {
                    app.WriteLine(PATTERN[i] + " - new Input and all Classes exhausted");
                }
            }
        }
Exemple #2
0
        public void Execute(IExampleInterface app)
        {
            this.app = app;

            // Create the neural network.
            BasicLayer hopfield;
            var        network = new HopfieldNetwork(4);

            // This pattern will be trained
            bool[] pattern1 = { true, true, false, false };
            // This pattern will be presented
            bool[]  pattern2 = { true, false, false, false };
            IMLData result;

            var data1 = new BiPolarMLData(pattern1);
            var data2 = new BiPolarMLData(pattern2);
            var set   = new BasicMLDataSet();

            set.Add(data1);

            // train the neural network with pattern1
            app.WriteLine("Training Hopfield network with: "
                          + FormatBoolean(data1));

            network.AddPattern(data1);
            // present pattern1 and see it recognized
            result = network.Compute(data1);
            app.WriteLine("Presenting pattern:" + FormatBoolean(data1)
                          + ", and got " + FormatBoolean(result));
            // Present pattern2, which is similar to pattern 1. Pattern 1
            // should be recalled.
            result = network.Compute(data2);
            app.WriteLine("Presenting pattern:" + FormatBoolean(data2)
                          + ", and got " + FormatBoolean(result));
        }
        public void Execute(IExampleInterface app)
        {
            this.app = app;

            // Create the neural network.
            BasicLayer hopfield;
            var network = new HopfieldNetwork(4);

            // This pattern will be trained
            bool[] pattern1 = {true, true, false, false};
            // This pattern will be presented
            bool[] pattern2 = {true, false, false, false};
            IMLData result;

            var data1 = new BiPolarMLData(pattern1);
            var data2 = new BiPolarMLData(pattern2);
            var set = new BasicMLDataSet();
            set.Add(data1);

            // train the neural network with pattern1
            app.WriteLine("Training Hopfield network with: "
                          + FormatBoolean(data1));

            network.AddPattern(data1);
            // present pattern1 and see it recognized
            result = network.Compute(data1);
            app.WriteLine("Presenting pattern:" + FormatBoolean(data1)
                          + ", and got " + FormatBoolean(result));
            // Present pattern2, which is similar to pattern 1. Pattern 1
            // should be recalled.
            result = network.Compute(data2);
            app.WriteLine("Presenting pattern:" + FormatBoolean(data2)
                          + ", and got " + FormatBoolean(result));
        }
 public void Execute(IExampleInterface app)
 {
     this.app = app;
     IMLDataSet trainingSet = new BasicMLDataSet(XOR_INPUT, XOR_IDEAL);
     BasicNetwork network = EncogUtility.SimpleFeedForward(2, 6, 0, 1, false);
     EncogUtility.TrainToError(network, trainingSet, 0.01);
     double error = network.CalculateError(trainingSet);
     EncogDirectoryPersistence.SaveObject(new FileInfo(FILENAME), network);
     double error2 = network.CalculateError(trainingSet);
     app.WriteLine("Error before save to EG: " + Format.FormatPercent(error));
     app.WriteLine("Error before after to EG: " + Format.FormatPercent(error2));
 }
        public void TrainInstar(CPNNetwork network, IMLDataSet training)
        {
            int epoch = 1;

            IMLTrain train = new TrainInstar(network, training, 0.1, true);

            for (int i = 0; i < 1000; i++)
            {
                train.Iteration();
                app.WriteLine("Training instar, Epoch #" + epoch);
                epoch++;
            }
        }
 /// <summary>
 /// Display the cities in the final path.
 /// </summary>
 public void DisplaySolution()
 {
     int[] path = anneal.Array;
     for (int i = 0; i < path.Length; i++)
     {
         if (i != 0)
         {
             app.Write(">");
         }
         app.Write("" + path[i]);
     }
     app.WriteLine("");
 }
 public void Execute(IExampleInterface app)
 {
     this.app = app;
     this.app = app;
     IMLDataSet trainingSet = new BasicMLDataSet(XOR_INPUT, XOR_IDEAL);
     BasicNetwork network = EncogUtility.SimpleFeedForward(2, 6, 0, 1, false);
     EncogUtility.TrainToError(network, trainingSet, 0.01);
     double error = network.CalculateError(trainingSet);
     SerializeObject.Save("encog.ser", network);
     network = (BasicNetwork) SerializeObject.Load("encog.ser");
     double error2 = network.CalculateError(trainingSet);
     app.WriteLine("Error before save to ser: " + Format.FormatPercent(error));
     app.WriteLine("Error before after to ser: " + Format.FormatPercent(error2));
 }
Exemple #8
0
        public void Execute(IExampleInterface app)
        {
            int inputNeurons  = CHAR_WIDTH * CHAR_HEIGHT;
            int outputNeurons = DIGITS.Length;

            var pattern = new ADALINEPattern();

            pattern.InputNeurons  = inputNeurons;
            pattern.OutputNeurons = outputNeurons;
            var network = (BasicNetwork)pattern.Generate();

            (new RangeRandomizer(-0.5, 0.5)).Randomize(network);

            // train it
            IMLDataSet training = GenerateTraining();
            IMLTrain   train    = new TrainAdaline(network, training, 0.01);

            int epoch = 1;

            do
            {
                train.Iteration();
                app.WriteLine("Epoch #" + epoch + " Error:" + train.Error);
                epoch++;
            } while (train.Error > 0.01);

            //
            app.WriteLine("Error:" + network.CalculateError(training));

            // test it
            for (int i = 0; i < DIGITS.Length; i++)
            {
                int output = network.Winner(Image2data(DIGITS[i]));

                for (int j = 0; j < CHAR_HEIGHT; j++)
                {
                    if (j == CHAR_HEIGHT - 1)
                    {
                        app.WriteLine(DIGITS[i][j] + " -> " + output);
                    }
                    else
                    {
                        app.WriteLine(DIGITS[i][j]);
                    }
                }

                app.WriteLine();
            }
        }
Exemple #9
0
        public void Execute(IExampleInterface app)
        {
            this.app = app;
            IMLDataSet   trainingSet = new BasicMLDataSet(XOR_INPUT, XOR_IDEAL);
            BasicNetwork network     = EncogUtility.SimpleFeedForward(2, 6, 0, 1, false);

            EncogUtility.TrainToError(network, trainingSet, 0.01);
            double error = network.CalculateError(trainingSet);

            EncogDirectoryPersistence.SaveObject(new FileInfo(FILENAME), network);
            double error2 = network.CalculateError(trainingSet);

            app.WriteLine("Error before save to EG: " + Format.FormatPercent(error));
            app.WriteLine("Error before after to EG: " + Format.FormatPercent(error2));
        }
Exemple #10
0
        private double TrainNetwork(String what, BasicNetwork network, IMLDataSet trainingSet)
        {
            // train the neural network
            ICalculateScore score    = new TrainingSetScore(trainingSet);
            IMLTrain        trainAlt = new NeuralSimulatedAnnealing(
                network, score, 10, 2, 100);


            IMLTrain trainMain = new Backpropagation(network, trainingSet, 0.00001, 0.0);

            var stop = new StopTrainingStrategy();

            trainMain.AddStrategy(new Greedy());
            trainMain.AddStrategy(new HybridStrategy(trainAlt));
            trainMain.AddStrategy(stop);

            int epoch = 0;

            while (!stop.ShouldStop())
            {
                trainMain.Iteration();
                app.WriteLine("Training " + what + ", Epoch #" + epoch + " Error:" + trainMain.Error);
                epoch++;
            }
            return(trainMain.Error);
        }
Exemple #11
0
        private double TrainNetwork(String what, BasicNetwork network, IMLDataSet trainingSet, string Method)
        {
            // train the neural network
            ICalculateScore score    = new TrainingSetScore(trainingSet);
            IMLTrain        trainAlt = new NeuralSimulatedAnnealing(network, score, 10, 2, 100);
            IMLTrain        trainMain;

            if (Method.Equals("Leven"))
            {
                Console.WriteLine("Using LevenbergMarquardtTraining");
                trainMain = new LevenbergMarquardtTraining(network, trainingSet);
            }
            else
            {
                trainMain = new Backpropagation(network, trainingSet);
            }

            var stop = new StopTrainingStrategy();

            trainMain.AddStrategy(new Greedy());
            trainMain.AddStrategy(new HybridStrategy(trainAlt));
            trainMain.AddStrategy(stop);

            int epoch = 0;

            while (!stop.ShouldStop())
            {
                trainMain.Iteration();
                app.WriteLine("Training " + what + ", Epoch #" + epoch + " Error:" + trainMain.Error);
                epoch++;
            }
            return(trainMain.Error);
        }
Exemple #12
0
        public void Execute(IExampleInterface app)
        {
            this.app = app;
            var pattern = new BAMPattern();

            pattern.F1Neurons = INPUT_NEURONS;
            pattern.F2Neurons = OUTPUT_NEURONS;
            var network = (BAMNetwork)pattern.Generate();

            // train
            for (int i = 0; i < NAMES.Length; i++)
            {
                network.AddPattern(
                    StringToBipolar(NAMES[i]),
                    StringToBipolar(PHONES[i]));
            }

            // test
            for (int i = 0; i < NAMES.Length; i++)
            {
                var data = new NeuralDataMapping(
                    StringToBipolar(NAMES[i]),
                    RandomBiPolar(OUT_CHARS * BITS_PER_CHAR));
                RunBAM(network, data);
            }

            app.WriteLine();

            for (int i = 0; i < PHONES.Length; i++)
            {
                var data = new NeuralDataMapping(
                    StringToBipolar(PHONES[i]),
                    RandomBiPolar(IN_CHARS * BITS_PER_CHAR));
                RunBAM(network, data);
            }

            app.WriteLine();

            for (int i = 0; i < NAMES.Length; i++)
            {
                var data = new NeuralDataMapping(
                    StringToBipolar(NAMES2[i]),
                    RandomBiPolar(OUT_CHARS * BITS_PER_CHAR));
                RunBAM(network, data);
            }
        }
        public void Execute(IExampleInterface app)
        {
            this.app = app;

            var temp = new TemporalXOR();
            IMLDataSet trainingSet = temp.Generate(100);

            var jordanNetwork = (BasicNetwork) CreateJordanNetwork();
            var feedforwardNetwork = (BasicNetwork) CreateFeedforwardNetwork();

            double elmanError = TrainNetwork("Jordan", jordanNetwork, trainingSet);
            double feedforwardError = TrainNetwork("Feedforward", feedforwardNetwork, trainingSet);

            app.WriteLine("Best error rate with Jordan Network: " + elmanError);
            app.WriteLine("Best error rate with Feedforward Network: " + feedforwardError);
            app.WriteLine("Jordan will perform only marginally better than feedforward.\nThe more output neurons, the better performance a Jordan will give.");
        }
Exemple #14
0
        public void Execute(IExampleInterface app)
        {
            this.app = app;

            var        temp        = new TemporalXOR();
            IMLDataSet trainingSet = temp.Generate(100);

            var jordanNetwork      = (BasicNetwork)CreateJordanNetwork();
            var feedforwardNetwork = (BasicNetwork)CreateFeedforwardNetwork();

            double elmanError       = TrainNetwork("Jordan", jordanNetwork, trainingSet);
            double feedforwardError = TrainNetwork("Feedforward", feedforwardNetwork, trainingSet);

            app.WriteLine("Best error rate with Jordan Network: " + elmanError);
            app.WriteLine("Best error rate with Feedforward Network: " + feedforwardError);
            app.WriteLine("Jordan will perform only marginally better than feedforward.\nThe more output neurons, the better performance a Jordan will give.");
        }
Exemple #15
0
        public void Execute(IExampleInterface app)
        {
            this.app = app;
            this.app = app;
            IMLDataSet   trainingSet = new BasicMLDataSet(XOR_INPUT, XOR_IDEAL);
            BasicNetwork network     = EncogUtility.SimpleFeedForward(2, 6, 0, 1, false);

            EncogUtility.TrainToError(network, trainingSet, 0.01);
            double error = network.CalculateError(trainingSet);

            SerializeObject.Save("encog.ser", network);
            network = (BasicNetwork)SerializeObject.Load("encog.ser");
            double error2 = network.CalculateError(trainingSet);

            app.WriteLine("Error before save to ser: " + Format.FormatPercent(error));
            app.WriteLine("Error before after to ser: " + Format.FormatPercent(error2));
        }
        public void Execute(IExampleInterface app)
        {
            this.app = app;

            var temp = new TemporalXOR();
            IMLDataSet trainingSet = temp.Generate(100);

            var elmanNetwork = (BasicNetwork) CreateElmanNetwork();
            var feedforwardNetwork = (BasicNetwork) CreateFeedforwardNetwork();

            double elmanError = TrainNetwork("Elman", elmanNetwork, trainingSet);
            double feedforwardError = TrainNetwork("Feedforward", feedforwardNetwork, trainingSet);

            app.WriteLine("Best error rate with Elman Network: " + elmanError);
            app.WriteLine("Best error rate with Feedforward Network: " + feedforwardError);
            app.WriteLine("(Elman should outperform feed forward)");
            app.WriteLine("If your results are not as good, try rerunning, or perhaps training longer.");
        }
Exemple #17
0
        public void RunBAM(BAMNetwork network, NeuralDataMapping data)
        {
            var line = new StringBuilder();

            line.Append(MappingToString(data));
            network.Compute(data);
            line.Append("  |  ");
            line.Append(MappingToString(data));
            app.WriteLine(line.ToString());
        }
        public void Execute(IExampleInterface app)
        {
            this.app = app;
            var pattern = new BoltzmannPattern();
            pattern.InputNeurons = NEURON_COUNT;
            var network = (BoltzmannMachine) pattern.Generate();

            CreateCities();
            CalculateWeights(network);

            network.Temperature = 100;
            do
            {
                network.EstablishEquilibrium();
                app.WriteLine(network.Temperature + " : " + DisplayTour(network.CurrentState));
                network.DecreaseTemperature(0.99);
            } while (!IsValidTour(network.CurrentState));

            app.WriteLine("Final Length: " + LengthOfTour(network.CurrentState));
        }
        private void ProcessCreateTraining()
        {
            String strWidth  = GetArg("width");
            String strHeight = GetArg("height");
            String strType   = GetArg("type");

            downsampleHeight = int.Parse(strWidth);
            downsampleWidth  = int.Parse(strHeight);

            if (strType.Equals("RGB"))
            {
                downsample = new RGBDownsample();
            }
            else
            {
                downsample = new SimpleIntensityDownsample();
            }

            training = new ImageMLDataSet(downsample, false, 1, -1);
            app.WriteLine("Training set created");
        }
        public void Execute(IExampleInterface app)
        {
            this.app = app;
            var pattern = new BoltzmannPattern();

            pattern.InputNeurons = NEURON_COUNT;
            var network = (BoltzmannMachine)pattern.Generate();

            CreateCities();
            CalculateWeights(network);

            network.Temperature = 100;
            do
            {
                network.EstablishEquilibrium();
                app.WriteLine(network.Temperature + " : " + DisplayTour(network.CurrentState));
                network.DecreaseTemperature(0.99);
            } while (!IsValidTour(network.CurrentState));

            app.WriteLine("Final Length: " + LengthOfTour(network.CurrentState));
        }
Exemple #21
0
        public void Execute(IExampleInterface app)
        {
            this.app = app;
            var        temp        = new TemporalXOR();
            IMLDataSet trainingSet = temp.Generate(100);

            if (app.Args.Length > 0)
            {
                trainingSet = temp.Generate(Convert.ToInt16(app.Args[0]));
            }

            var elmanNetwork       = (BasicNetwork)CreateElmanNetwork(trainingSet.InputSize);
            var feedforwardNetwork = (BasicNetwork)CreateFeedforwardNetwork(trainingSet.InputSize);

            double elmanError       = TrainNetwork("Elman", elmanNetwork, trainingSet, "Leven");
            double feedforwardError = TrainNetwork("Feedforward", feedforwardNetwork, trainingSet, "Leven");

            app.WriteLine("Best error rate with Elman Network: " + elmanError);
            app.WriteLine("Best error rate with Feedforward Network: " + feedforwardError);
            app.WriteLine("(Elman should outperform feed forward)");
            app.WriteLine("If your results are not as good, try rerunning, or perhaps training longer.");
        }
Exemple #22
0
        public void Execute(IExampleInterface app)
        {
            this.app = app;
            SetupInput();
            var pattern = new ART1Pattern();
            pattern.InputNeurons = INPUT_NEURONS;
            pattern.OutputNeurons = OUTPUT_NEURONS;
            var network = (ART1) pattern.Generate();


            for (int i = 0; i < PATTERN.Length; i++)
            {
                var dataIn = new BiPolarMLData(input[i]);
                var dataOut = new BiPolarMLData(OUTPUT_NEURONS);
                network.Compute(dataIn, dataOut);
                if (network.HasWinner)
                {
                    app.WriteLine(PATTERN[i] + " - " + network.Winner);
                }
                else
                {
                    app.WriteLine(PATTERN[i] + " - new Input and all Classes exhausted");
                }
            }
        }
        public void Execute(IExampleInterface app)
        {
            int inputNeurons = CHAR_WIDTH*CHAR_HEIGHT;
            int outputNeurons = DIGITS.Length;

            var pattern = new ADALINEPattern();
            pattern.InputNeurons = inputNeurons;
            pattern.OutputNeurons = outputNeurons;
            var network = (BasicNetwork) pattern.Generate();

            (new RangeRandomizer(-0.5, 0.5)).Randomize(network);

            // train it
            IMLDataSet training = GenerateTraining();
            IMLTrain train = new TrainAdaline(network, training, 0.01);

            int epoch = 1;
            do
            {
                train.Iteration();
                app.WriteLine("Epoch #" + epoch + " Error:" + train.Error);
                epoch++;
            } while (train.Error > 0.01);

            //
            app.WriteLine("Error:" + network.CalculateError(training));

            // test it
            for (int i = 0; i < DIGITS.Length; i++)
            {
                int output = network.Winner(Image2data(DIGITS[i]));

                for (int j = 0; j < CHAR_HEIGHT; j++)
                {
                    if (j == CHAR_HEIGHT - 1)
                        app.WriteLine(DIGITS[i][j] + " -> " + output);
                    else
                        app.WriteLine(DIGITS[i][j]);
                }

                app.WriteLine();
            }
        }
        public void Execute(IExampleInterface app)
        {
            this.app = app;
            var pattern = new BAMPattern();
            pattern.F1Neurons = INPUT_NEURONS;
            pattern.F2Neurons = OUTPUT_NEURONS;
            var network = (BAMNetwork) pattern.Generate();

            // train
            for (int i = 0; i < NAMES.Length; i++)
            {
                network.AddPattern(
                    StringToBipolar(NAMES[i]),
                    StringToBipolar(PHONES[i]));
            }

            // test
            for (int i = 0; i < NAMES.Length; i++)
            {
                var data = new NeuralDataMapping(
                    StringToBipolar(NAMES[i]),
                    RandomBiPolar(OUT_CHARS*BITS_PER_CHAR));
                RunBAM(network, data);
            }

            app.WriteLine();

            for (int i = 0; i < PHONES.Length; i++)
            {
                var data = new NeuralDataMapping(
                    StringToBipolar(PHONES[i]),
                    RandomBiPolar(IN_CHARS*BITS_PER_CHAR));
                RunBAM(network, data);
            }

            app.WriteLine();

            for (int i = 0; i < NAMES.Length; i++)
            {
                var data = new NeuralDataMapping(
                    StringToBipolar(NAMES2[i]),
                    RandomBiPolar(OUT_CHARS*BITS_PER_CHAR));
                RunBAM(network, data);
            }
        }