private void utworzSiecBtn_Click(object sender, EventArgs e) { if (strukturaSieci.Count < 2) { MessageBox.Show("schemat sieci jest nieprawidłowy!!"); return; } Siec siec = new Siec(strukturaSieci.ToArray()); siec.wyswietlListeNeuronowZWagami(); this.siec = siec; zapiszDoPlikuBtn.Enabled = true; }
private void zatwierdzBtn_Click(object sender, EventArgs e) { sciezkaPlikuZWagami = this.sciezkaDoPlikuZWagamiBox.Text; (listaWagZPliku, strukturaSieci) = OdczytZapis.wczytajWagi(@sciezkaPlikuZWagami); foreach (int i in strukturaSieci) { Console.WriteLine(i); } this.przeuczSiecBtn.Enabled = true; this.testPanel.Visible = true; //sciec do testowania po wczytaniu wag z pliku this.siec = new Siec(strukturaSieci, listaWagZPliku); }
private void przeuczSiecBtn_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Title = "Wybierz plik z próbkami"; if (openFileDialog.ShowDialog() == DialogResult.OK) { if (Path.GetExtension(openFileDialog.FileName) != ".txt") { MessageBox.Show("Plik musi być w formacie txt"); return; } sciezkaPlikuZprobkami = openFileDialog.FileName; } if (sciezkaPlikuZprobkami == "") { return; } listaProbek = OdczytZapis.wczytajProbki(sciezkaPlikuZprobkami); foreach (var c in listaProbek) { foreach (var ef in c) { Console.Write(ef + " "); } Console.WriteLine(); } Siec siec = new Siec(strukturaSieci, listaWagZPliku); this.siec = siec; Propagacja propagacja = new Propagacja(siec); propagacja.parametrBeta = double.Parse(parametrBetaBox.Text); PrzeuczSiec.przeuczSiec(listaProbek, siec, propagacja, strukturaSieci[0]); warstwy = siec.warstwy; zapiszWagiBtn.Enabled = true; testPanel.Visible = true; }
public void nadpiszWagi(Siec siec, List <List <double> > korektyWagCalejSieci) { korektyWagCalejSieci.Reverse(); int indeksWarstwy = 0; foreach (var warstwa in siec.warstwy) { int indeksNeuronu = 0; foreach (var neuron in warstwa) { foreach (var listaWagNeuronu in neuron.listaWag) { listaWagNeuronu.waga += korektyWagCalejSieci[indeksWarstwy][indeksNeuronu]; //Console.WriteLine(listaWagNeuronu.waga); indeksNeuronu++; } } indeksWarstwy++; } korektyWagCalejSieci.Reverse(); }
public static void przeuczSiec(List <double[]> listaProbek, Siec siec, Propagacja propagacja, int iloscWejsc) { for (int j = 0; j < 20000; j++) { for (int i = 0; i < listaProbek.Count; i++) { // siec.wyswietlListeNeuronowZWagami(); siec.wyliczWartoscWyjsciowaSieci(siec.warstwy, listaProbek[i]); propagacja.wyliczBlad(listaProbek[i].Skip(iloscWejsc).ToArray()); propagacja.wyliczKoretke(listaProbek[i], iloscWejsc); } randomizujListe(listaProbek); if (j % 1000 == 0) { Console.WriteLine("\n========================================"); Console.WriteLine("Epoka: " + j); propagacja.wyswietlKOrektyWszystkichWag(propagacja.korektyWagCalejSieci); } //nadpisanie wag po propagacji wszystkich probek propagacja.nadpiszWagi(siec, propagacja.korektyWagCalejSieci); propagacja.korektyWagCalejSieci.Clear(); } }
public Propagacja(Siec siec) { this.siec = siec; }