コード例 #1
0
        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;
        }
コード例 #2
0
 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();
     }
 }