Example #1
0
        public static void Main(String[] args)
        {
            //var sourceDir = Network.Default.DatasetDirectory + "\\Base";
            //var outputDir = Network.Default.DatasetDirectory;

            //CharacterDatasetHandler.GenerateDatasetEntry(sourceDir, outputDir);

            var trainAlphabet      = new AlphabetDataset(EnumDatasetType.Train);
            var validationAlphabet = new AlphabetDataset(EnumDatasetType.Validation);
            var testAlphabet       = new AlphabetDataset(EnumDatasetType.Test);

            var cycles = DatasetUtils.BuildCyclesFromDataset(trainAlphabet, validationAlphabet, testAlphabet);


            var network = new MultiLayerNetwork(cycles);

            network.InitializeNetwork();

            ObservableCollection <string> lettersReturned;
            var likelyResults = "";


            Console.WriteLine("\nThe Network has initialized. The test of the Network will start\n");
            Console.ReadLine();

            var numberOfExamples       = 0;
            var numberOfCorrectResults = 0;

            for (int i = 0; i < network.Cycles.Count; i++)
            {
                //network.Cycles[i].ExamplesTest = network.RandomizeList(network.Cycles[i].ExamplesTest);

                foreach (Example example in network.Cycles[i].ExamplesTest)
                {
                    var outputFromTrainedNetwork = network.CheckElement(example);
                    lettersReturned = DatasetUtils.GetLettersFromOutputArray(outputFromTrainedNetwork);

                    likelyResults = string.Join(" ", lettersReturned);

                    Console.WriteLine("Cycle: " + (i + 1) + " Expected result: " + example.Name + ". Likely results: " + likelyResults);

                    numberOfExamples++;

                    if (lettersReturned.Contains(example.Name))
                    {
                        numberOfCorrectResults++;
                    }

                    likelyResults = "";
                }
            }

            var result = ((float)numberOfCorrectResults / (float)numberOfExamples) * 100;

            Console.WriteLine("Accuraty rate of Network: " + result + "%");

            Console.ReadLine();
        }
Example #2
0
        public static ObservableCollection <Cycle> BuildCyclesFromDataset(AlphabetDataset trainAlphabet, AlphabetDataset validationAlphabet, AlphabetDataset testAlphabet)
        {
            var cycles = new ObservableCollection <Cycle>();

            var imagesPerLetterTrain      = trainAlphabet.Letters.FirstOrDefault().ImagesPath.Count;
            var imagesPerLetterValidation = validationAlphabet.Letters.FirstOrDefault().ImagesPath.Count;
            var imagesPerLetterTest       = testAlphabet.Letters.FirstOrDefault().ImagesPath.Count;

            var letterCount = trainAlphabet.Letters.Count;

            for (int i = 0; i < imagesPerLetterTrain; i++)
            {
                var cycle = new Cycle();

                for (int j = 0; j < letterCount; j++)
                {
                    var letter = trainAlphabet.Letters[j];

                    var example = new Example()
                    {
                        Name         = letter.Name,
                        InputValues  = letter.GetImagePixels(i),
                        WantedValues = GetLetterWantedValues(letter.Name)
                    };

                    cycle.ExamplesTrain.Add(example);

                    if (i < imagesPerLetterValidation && i < imagesPerLetterTest)
                    {
                        var letterValidation = validationAlphabet.Letters[j];

                        var exampleValidation = new Example()
                        {
                            Name         = letterValidation.Name,
                            InputValues  = letterValidation.GetImagePixels(i),
                            WantedValues = GetLetterWantedValues(letterValidation.Name)
                        };

                        cycle.ExamplesValidation.Add(exampleValidation);

                        var letterTest = testAlphabet.Letters[j];

                        var exampleTest = new Example()
                        {
                            Name         = letterTest.Name,
                            InputValues  = letterTest.GetImagePixels(i),
                            WantedValues = GetLetterWantedValues(letterTest.Name)
                        };

                        cycle.ExamplesTest.Add(exampleTest);
                    }
                }
                cycles.Add(cycle);
            }

            return(cycles);
        }