private void button5_Click(object sender, EventArgs e) { List <WynikNeuroneowej> wk = new List <WynikNeuroneowej>(); Random r = new Random(); int Długość = 0; int IlośćPetli = 0; int Najlepsza = 0; try { Długość = Convert.ToInt32(textBox3.Text); IlośćPetli = Convert.ToInt32(textBox4.Text); } catch (Exception ex) { MessageBox.Show("źle wpisane dane " + ex.Message); return; } listBox1.Items.Clear(); t = new Thread(new ThreadStart(() => { for (int i = 0; i < IlośćPetli; i++) { SieciRywalizujące <string> tb = StwórzSieć(); for (int j = 0; j < Długość; j++) { TabelaUcząca rt = ZbiórUczący[r.Next(ZbiórUczący.Count)]; tb.Ucz(rt.Nazwa, rt.WejścieFloat); } int IlośćPoprawnych = 0; foreach (var item in ZbiórUczący) { if (tb.PobierzWartośc(item.WejścieFloat) == item.Nazwa) { IlośćPoprawnych++; } } wk.Add(new WynikNeuroneowej() { Poprawne = IlośćPoprawnych }); if (Najlepsza < IlośćPoprawnych) { tb.Zapisz(Loto.StałeGlobalne.NazwaPlikuRywalizującejSieci + "uczenie", Zapis); Najlepsza = IlośćPoprawnych; Console.WriteLine(IlośćPoprawnych); listBox1.Invoke(new TR(() => { listBox1.Items.Add(IlośćPoprawnych.ToString()); })); } } this.Invoke(new TR(() => { this.Text = WynikNeuroneowej.Drukuj(wk); })); })); t.Start(); }
private void button1_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { DirectoryInfo dr = new DirectoryInfo(folderBrowserDialog1.SelectedPath); DirectoryInfo[] drt = dr.GetDirectories(); int j = 0; foreach (var item in drt) { s.Add(item.Name); FileInfo[] fi = item.GetFiles(); double[] wyjście = StwórzyWyjscie(j, drt.Length); for (int i = 0; i < fi.Length; i++) { TabelaUcząca tb = new TabelaUcząca(); var a = new ObrazDoPorównywania(fi[i].FullName, Convert.ToSingle(textBox9.Text)); tb.Wejście = a.NaJedenWymiar; PrzesóńWMinus(tb.Wejście, 0.2); tb.WejścieFloat = a.NaJedenWymiarfloat; tb.Nr = j; tb.Nazwa = item.Name; tb.Wyjście = wyjście; ZbiórUczący.Add(tb); } j++; } } FileStream fs = new FileStream("zap.txt", FileMode.Create); StreamWriter sw = new StreamWriter(fs); foreach (var item in s) { sw.WriteLine(item); } sw.Close(); }
private void button2_Click(object sender, EventArgs e) { List <WynikNeuroneowej> wk = new List <WynikNeuroneowej>(); Random r = new Random(); int Najlepsza = 0; int Długość = 0, IlośćPetli = 0; double WSPUczenia = 0, WspPendu = 0, Bias = 0; float OstatniaPróbaUcząca, UczeniePopranego; try { Pobierz(out Długość, out IlośćPetli, out WSPUczenia, out WspPendu, out Bias, out OstatniaPróbaUcząca, out UczeniePopranego); } catch (Exception) { MessageBox.Show("źle wpisane dane"); return; } Maks = Convert.ToInt32(textBox6.Text); listBox1.Items.Clear(); t = new Thread(new ThreadStart(() => { for (int i = 0; i < IlośćPetli; i++) { ActivationNetwork network = null; if (DomyślnaSiec == null) { network = KontrukcjaSieci(Bias); Neuron.RandRange = new AForge.Range(-1, 1); network.Randomize(); } else { network = DomyślnaSiec; } BackPropagationLearning teacher = new BackPropagationLearning(network); teacher.Momentum = WspPendu; for (int j = 0; j < Długość; j++) { float Współczynik = ((float)(Długość - j)) / Długość; teacher.LearningRate = WSPUczenia * Współczynik + OstatniaPróbaUcząca; TabelaUcząca rt = ZbiórUczący[r.Next(ZbiórUczący.Count)]; double[] UczWyjście = (double[])rt.Wyjście.Clone(); int p = 0; bool CzyPoprawny; while (p++ < Maks) { CzyPoprawny = (Loto.Matematyka.ZnajdźMaksymalną(network.Compute(rt.Wejście)) == rt.Nr); if (!CzyPoprawny) { teacher.Run(rt.Wejście, rt.Wyjście); } else if (UczPoprawne) { teacher.LearningRate = UczeniePopranego * WSPUczenia; teacher.Run(rt.Wejście, rt.Wyjście); break; } else { break; } } } int IlośćPoprawnych = 0; double Odhylenie = 0; StreamWriter sw = null; if (checkBox2.Checked) { sw = new StreamWriter(new FileStream($"zap{i}.txt", FileMode.Create)); } foreach (var item in ZbiórUczący) { double[] tb = network.Compute(item.Wejście); Odhylenie += OdchylenieStadardowe(tb, item.Wyjście); if (Loto.Matematyka.ZnajdźMaksymalną(tb) == item.Nr) { IlośćPoprawnych++; } foreach (var item2 in ListaNajlepszych(tb)) { sw?.Write(item2); sw?.Write('\t'); } sw?.WriteLine(item.Nazwa); } sw?.Close(); Odhylenie /= ZbiórUczący.Count; if (Najlepsza < IlośćPoprawnych) { network.Save("siec.tv"); Najlepsza = IlośćPoprawnych; Console.WriteLine(IlośćPoprawnych); } wk.Add(new WynikNeuroneowej() { błąd = Odhylenie, Poprawne = IlośćPoprawnych }); listBox1.Invoke(new TR(() => { listBox1.Items.Add(IlośćPoprawnych.ToString() + " odchylenie stadardowe " + Odhylenie); })); } this.Invoke(new TR(() => { this.Text = WynikNeuroneowej.Drukuj(wk); })); })); t.Start(); }