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); }
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 + "\""); }