Beispiel #1
0
        public static void Demo()
        {
            PCANetwork network = PCANetwork.Create(64, 8);

            var dataSet = DataGenerator.GenerateDataSet1();

            var pca = new PCA(network, 0.7);

            PCATrainer trainer = new PCATrainer(network, 50, pca, 0.00000005);

            Normalizer3 normalizer = new Normalizer3();

            //Normalizer normalizer = new Normalizer();

            normalizer.Fit(dataSet.XList);

            var normalizedX = normalizer.Normalize(dataSet.XList);


            Utils.DisplayListList(dataSet.XList);
            Console.WriteLine("--------------------------");
            Utils.DisplayListList(normalizedX);

            //Utils.DisplayListList(normalizer.DeNormalize(normalizedX));

            trainer.Fit(normalizedX);

            List <List <double> > convertedX = trainer.GetConvertedDim(normalizedX);

            //convertedX=normalizer.DeNormalize(convertedX);

            BPNetwork bpNetwork = BPNetwork.Create(8, new int[] { 4 /*, 4, 3*/ }, 3, ActivationFunction.SIGMOID, ActivationFunction.SIGMOID);

            var       bp        = new BP(bpNetwork, 0.6);
            BPTrainer bpTrainer = new BPTrainer(bpNetwork, 2000, bp);

            bpTrainer.Fit(convertedX, dataSet.YList);

            List <List <double> > predicted_ys = bpTrainer.Predict(convertedX);

            CorrectCalculator correctCalculator = new CorrectCalculator();

            var convertedPredictValue = NeuronOutputConverter.OrderInteger(predicted_ys);

            double correct = correctCalculator.Calculate(convertedPredictValue, dataSet.YList);

            Console.WriteLine("Score: {0}%", correct * 100);
        }
Beispiel #2
0
        public static void Demo()
        {
            //BPNetwork network = BPNetwork.Create(1, new int[] { 1/*, 4, 3*/ }, 2, ActivationFunction.SIGMOID, ActivationFunction.SIGMOID);
            BPNetwork network = BPNetwork.Create(32, new int[] { 10 /*, 4, 3*/ }, 1, ActivationFunction.SIGMOID, ActivationFunction.SIGMOID);

            network.Display();

            //var dataSet = DataGenerator.GenerateDataSet1();
            var dataSet = DataGenerator.GenerateDataSet1_2();

            var       bp      = new BP(network, 0.6);
            BPTrainer trainer = new BPTrainer(network, 500, bp);

            trainer.Fit(dataSet.XList, dataSet.YList);

            List <List <double> > predicted_ys = trainer.Predict(dataSet.XList);

            Console.WriteLine("Network Outputs: ");
            foreach (var ys in predicted_ys)
            {
                Console.Write("     ");
                foreach (var y in ys)
                {
                    Console.Write(y);
                    Console.Write(", ");
                }
                Console.WriteLine();
            }

            network.Display();

            CorrectCalculator correctCalculator = new CorrectCalculator();

            var convertedPredictValue = NeuronOutputConverter.OrderInteger(predicted_ys);

            double correct = correctCalculator.Calculate(convertedPredictValue, dataSet.YList);

            Console.WriteLine("Score: {0}%", correct * 100);



            StringBuilder sb_epoch  = new StringBuilder();
            StringBuilder sb_errors = new StringBuilder();

            int step = 0;

            trainer.Epoch_Errors.ForEach(err => {
                sb_epoch.Append(step + ",");

                sb_errors.Append(err + ",");

                step++;
            });

            //生成文本数据,拷贝到python中作图
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("import matplotlib.pyplot as plt");
            sb.AppendLine("x1=[" + sb_epoch.ToString().TrimEnd(",".ToCharArray()) + "]");
            sb.AppendLine("y1=[" + sb_errors.ToString().TrimEnd(",".ToCharArray()) + "]");
            sb.AppendLine("plt.plot(x1,y1,'b^')");
            sb.AppendLine("plt.show()");

            var file = System.IO.Path.Combine(AppContext.BaseDirectory, "display.py");

            File.WriteAllText(file, sb.ToString());
            Console.WriteLine("saved to path: " + file);

            System.Diagnostics.Process.Start("C:\\ProgramData\\Anaconda3\\envs\\keras\\python.exe", "\"" + file + "\"");
        }