public void TestMethod1() { // 创建输入层、隐层和输出层 var inputLayer = new LinearLayer(1); var hiddenLayer = new LinearLayer(5); var outputLayer = new LinearLayer(1); // 创建层之间的关联 new BackpropagationConnector(inputLayer, hiddenLayer, ConnectionMode.Complete); new BackpropagationConnector(hiddenLayer, outputLayer, ConnectionMode.Complete); // 创建神经网络 var network = new BackpropagationNetwork(inputLayer, outputLayer); //network.SetLearningRate(new LinearFunction(0.1, 0.6)); network.Initialize(); // 训练 var ran = new Random(); for (var i = 0; i < 100; i++) { var inputVector = new double[] { i }; var outputVector = new double[] { Math.PI *i }; var trainingSample = new TrainingSample(inputVector, outputVector); network.Learn(trainingSample, i, 100); } // 预测 var testInput = new double[] { 1 }; var testOutput = network.Run(testInput); Console.WriteLine(testOutput[0]); }
void CreateNewNetwork() { LinearLayer inputLayer = new LinearLayer(neurons); SigmoidLayer hiddenLayer = new SigmoidLayer(hidden1Neurons); SigmoidLayer hiddenLayer2 = new SigmoidLayer(hidden2Neurons); LinearLayer outputLayer = new LinearLayer(outputNum); BackpropagationConnector conn1 = new BackpropagationConnector(inputLayer, hiddenLayer); conn1.Initializer = new RandomFunction(0d, 0.001d); BackpropagationConnector conn3 = new BackpropagationConnector(hiddenLayer, hiddenLayer2); conn3.Initializer = new RandomFunction(0d, 0.001d); BackpropagationConnector conn2 = new BackpropagationConnector(hiddenLayer2, outputLayer); conn2.Initializer = new RandomFunction(0d, 0.001d); conn1.Initialize(); conn2.Initialize(); conn3.Initialize(); neuralNetwork = new BackpropagationNetwork(inputLayer, outputLayer); neuralNetwork.SetLearningRate(learningRate); neuralNetwork.Initialize(); }
private void Form1_OnLoad(object sender, EventArgs e) { inputTier = new LinearLayer(35); hiddenTier = new SigmoidLayer(3); outputTier = new SigmoidLayer(5); _ = new BackpropagationConnector(inputTier, hiddenTier); _ = new BackpropagationConnector(hiddenTier, outputTier); neuralNetwork = new BackpropagationNetwork(inputTier, outputTier); neuralNetwork.Initialize(); }
private void WFAnnRecognition_Load(object sender, EventArgs e) { lstLog.Items.Insert(0, "Initialize ANN model"); inputLayer = new LinearLayer(35); hiddenLayer = new SigmoidLayer(3); outputLayer = new SigmoidLayer(5); BackpropagationConnector connector = new BackpropagationConnector(inputLayer, hiddenLayer); BackpropagationConnector connector2 = new BackpropagationConnector(hiddenLayer, outputLayer); network = new BackpropagationNetwork(inputLayer, outputLayer); network.Initialize(); }
private void Form1_Load(object sender, EventArgs e) { int gizlikatmansayisi = Convert.ToInt32(Microsoft.VisualBasic.Interaction.InputBox("Gizli Katman Sayısını Giriniz", "Bilgi Girişi", "Örn: 3", 0, 0)); giriskatmanı = new LinearLayer(35); gizlikatman = new SigmoidLayer(gizlikatmansayisi); cikiskatmani = new SigmoidLayer(5); BackpropagationConnector giris_gizli_baglanti = new BackpropagationConnector(giriskatmanı, gizlikatman); BackpropagationConnector gizli_cikis_baglanti = new BackpropagationConnector(gizlikatman, cikiskatmani); ag = new BackpropagationNetwork(giriskatmanı, cikiskatmani); ag.Initialize(); }
private void button8_Click(object sender, EventArgs e) { LinearLayer inputLayer = new LinearLayer(Convert.ToInt32(textBox3.Text)); SigmoidLayer hiddenLayer = new SigmoidLayer(Convert.ToInt32(textBox4.Text)); SigmoidLayer outputLayer = new SigmoidLayer(Convert.ToInt32(textBox5.Text)); BackpropagationConnector conn1 = new BackpropagationConnector(inputLayer, hiddenLayer); BackpropagationConnector conn2 = new BackpropagationConnector(hiddenLayer, outputLayer); network = new BackpropagationNetwork(inputLayer, outputLayer); network.Initialize(); MessageBox.Show("Rete generata con successo."); }
async Task LearnNetworkAsync() { _network = new BackpropagationNetwork(_inputLayer, _outputLayer); _network.Initialize(); var trainingSet = new TrainingSet(1, 3); foreach (var b in from bomb in Enum.GetValues(typeof(BombTypes)).Cast <BombTypes>() where bomb != BombTypes.Mine select BombFabric.CreateBomb(bomb) into b where b != null select b) { trainingSet.Add(new TrainingSample(new double[] { b.BeepsLevel }, new double[] { (int)b.FirstStageDisarming, (int)b.SecondStageDisarming, (int)b.ThirdStageDisarming })); } _network.Learn(trainingSet, 100000); }
public void InitializeNetwork(int n) { neuronCount = n; _neuralNetwork.Initialize(); }
static void Main(string[] args) { Boolean finished = false; //Layer LinearLayer inputLayer = new LinearLayer(25); SigmoidLayer hiddenLayer1 = new SigmoidLayer(100); SigmoidLayer outputLayer = new SigmoidLayer(4); //Connectors BackpropagationConnector connector = new BackpropagationConnector(inputLayer, hiddenLayer1); BackpropagationConnector connector3 = new BackpropagationConnector(hiddenLayer1, outputLayer); network = new BackpropagationNetwork(inputLayer, outputLayer); network.Initialize(); labyrinth laby = new labyrinth(); player plyr = new player(); laby.Update(laby); Console.WriteLine(laby.GetPlayerPosition(laby.Laby)); do { string pressedKey = Console.ReadKey(true).Key.ToString(); switch (pressedKey) { case "RightArrow": if (laby.Laby[plyr.getPlayerPosition().Item1, plyr.getPlayerPosition().Item2 + 1] != laby.Wall) { laby.Laby = laby.SetPosition(plyr.getPlayerPosition(), plyr.move("R"), laby.Laby); laby.Update(laby); } break; case "LeftArrow": if (laby.Laby[plyr.getPlayerPosition().Item1, plyr.getPlayerPosition().Item2 - 1] != laby.Wall) { laby.Laby = laby.SetPosition(plyr.getPlayerPosition(), plyr.move("L"), laby.Laby); laby.Update(laby); } break; case "UpArrow": if (laby.Laby[plyr.getPlayerPosition().Item1 - 1, plyr.getPlayerPosition().Item2] != laby.Wall) { laby.Laby = laby.SetPosition(plyr.getPlayerPosition(), plyr.move("U"), laby.Laby); laby.Update(laby); } break; case "DownArrow": if (laby.Laby[plyr.getPlayerPosition().Item1 + 1, plyr.getPlayerPosition().Item2] != laby.Wall) { laby.Laby = laby.SetPosition(plyr.getPlayerPosition(), plyr.move("D"), laby.Laby); laby.Update(laby); } break; } } while (finished != true); Console.Read(); }
private void Train(object sender, EventArgs e) { // btnTrain.Enabled = false; int cycles = 200; // if (!int.TryParse(txtCycles.Text, out cycles)) { cycles = 200; } // txtCycles.Text = cycles.ToString(); int currentCombination = 0; //int totalCombinations = Alphabet.LetterCount * (Alphabet.LetterCount - 1) / 2; for (int i = 0; i < Alphabet.LetterCount; i++) { for (int j = i + 1; j < Alphabet.LetterCount; j++) { ActivationLayer inputLayer = new LinearLayer(400); ActivationLayer hiddenLayer = new SigmoidLayer(4); ActivationLayer outputLayer = new SigmoidLayer(2); new BackpropagationConnector(inputLayer, hiddenLayer); new BackpropagationConnector(hiddenLayer, outputLayer); BackpropagationNetwork network = new BackpropagationNetwork(inputLayer, outputLayer); TrainingSet trainingSet = new TrainingSet(400, 2); Alphabet ithLetter = Alphabet.GetLetter(i); Alphabet jthLetter = Alphabet.GetLetter(j); foreach (Letter instance in ithLetter.Instances) { trainingSet.Add(new TrainingSample(instance.GetEquivalentVector(20, 20), new double[] { 1d, 0d })); } foreach (Letter instance in jthLetter.Instances) { trainingSet.Add(new TrainingSample(instance.GetEquivalentVector(20, 20), new double[] { 0d, 1d })); } //progressTraining.Value = 100 * currentCombination / totalCombinations; Application.DoEvents(); bool correct = false; int currentCycles = 35; int count = trainingSet.TrainingSampleCount; while (correct == false & currentCycles <= cycles) { network.Initialize(); network.Learn(trainingSet, currentCycles); correct = true; for (int sampleIndex = 0; sampleIndex < count; sampleIndex++) { double[] op = network.Run(trainingSet[sampleIndex].InputVector); if (((trainingSet[sampleIndex].OutputVector[0] > trainingSet[sampleIndex].OutputVector[1]) && op[0] - op[1] < 0.4) || ((trainingSet[sampleIndex].OutputVector[0] < trainingSet[sampleIndex].OutputVector[1]) && op[1] - op[0] < 0.4)) { correct = false; trainingSet.Add(trainingSet[sampleIndex]); } } currentCycles *= 2; } //lstLog.Items.Add(cboAplhabet.Items[i] + " & " + cboAplhabet.Items[j] + " = " + network.MeanSquaredError.ToString("0.0000")); // lstLog.TopIndex = lstLog.Items.Count - (int)(lstLog.Height / lstLog.ItemHeight); try { using (Stream stream = File.Open(Application.StartupPath + @"\Networks\" + i.ToString("00") + j.ToString("00") + ".ndn", FileMode.Create)) { IFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, network); } } catch (Exception) { MessageBox.Show("Failed to save trained neural networks", "Critical Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } currentCombination++; } } // progressTraining.Value = 0; // btnTrain.Enabled = false; }