示例#1
0
        public static int Calculate(int age, string sex, Bitmap brainScan)
        {
            double[] input;
            var      pixelBrightness = SupportAI.CalculateScan(brainScan);

            if (sex.ToLower() == Properties.Resource.Female)
            {
                input = new double[] { age, 1.0, pixelBrightness[0], pixelBrightness[1] }
            }
            ;
            else
            {
                input = new double[] { age, .0, pixelBrightness[0], pixelBrightness[1] }
            };
            input[0] = SupportAI.Normalize(input[0], double.Parse(Properties.Resource.NormalizeAgeMax), double.Parse(Properties.Resource.NormalizeAgeMin));
            input[2] = SupportAI.Normalize(input[2], double.Parse(Properties.Resource.NormalizeBrightnessMax), double.Parse(Properties.Resource.NormalizeBrightnessMin));
            input[3] = SupportAI.Normalize(input[3], double.Parse(Properties.Resource.NormalizeDarknessMax), double.Parse(Properties.Resource.NormalizeDarknessMin));

            Network network = new Network(new int[] { 4, 7, 7, 1 });

            network.ImportBiases("...\\...\\...\\NeuralNetwork\\NeuralNetwork\\Biases.txt");
            network.ImportWeights("...\\...\\...\\NeuralNetwork\\NeuralNetwork\\Weights.txt");

            return(network.FeedForward(input));
        }
    }
示例#2
0
        static void Main(string[] args)
        {
            double[][] dataLearning   = SupportAI.LoadData(Properties.Resource.TrainingData, 0, true);
            double[][] inputLearning  = dataLearning.Select(line => line.Take(4).ToArray()).ToArray();
            double[][] outputLearning = dataLearning.Select(line => line.Skip(4).ToArray()).ToArray();


            double[][] dataTest   = SupportAI.LoadData(Properties.Resource.TestData, dataLearning.Last().Length, false);
            double[][] inputTest  = dataTest.Select(line => line.Take(4).ToArray()).ToArray();
            double[][] outputTest = dataTest.Select(line => line.Skip(4).ToArray()).ToArray();

            Network network = new Network(new int[] { 4, 7, 7, 1 });

            network.ImportBiases("...\\...\\Biases.txt");
            network.ImportWeights("...\\...\\Weights.txt");

            network.ShowNetwork();
            int    gen        = 500;
            double procentage = 0.0;
            int    tmp        = 1;

            while (procentage < 65)
            {
                // v uczenie v
                for (int j = 0; j < gen; j++)
                {
                    for (int i = 0; i < inputLearning.Length; i++)
                    {
                        network.Learning(inputLearning[i], outputLearning[i]);
                        if (j > gen - 2 && procentage > 60)
                        {
                            network.ShowOutput(outputLearning[i]);
                        }
                    }
                }
                //v testowanie v
                int pass = 0;
                for (int i = 0; i < inputTest.Length; i++)
                {
                    if (network.FeedForward(inputTest[i], outputTest[i]))
                    {
                        pass++;
                    }
                    // network.ShowOutput(outputTest[i]);
                }
                procentage = 100.0 * pass / inputTest.Length;
                Console.WriteLine($"Gen: {(tmp++)*gen} \nAll: {inputTest.Length} Correct: {pass} Procentage: {procentage}%");
            }

            network.ExportBiases("...\\...\\Biases.txt");
            network.ExportWeights("...\\...\\Weights.txt");
            Console.ReadKey();
        }