private void treinar_rede() { progressBar1.Value = 0; int n1 = int.Parse(textBox1.Text); int n2 = int.Parse(textBox2.Text); int n3 = int.Parse(textBox3.Text); int max = int.Parse(textBox4.Text); N.e = float.Parse(textBox5.Text); RN rede = new RN(1, n1, n2, n3); List <float[]> entradas = new List <float[]>(); List <float[]> saidas = new List <float[]>(); gp.Clear(pictureBox1.BackColor); foreach (ponto pt in pontos) { entradas.Add(new float[] { pt.x / W }); saidas.Add(new float[] { pt.y / H }); gp.FillEllipse(Brushes.Black, pt.x - 3, pt.y - 3, 6, 6); } float step = max / 100f; float value = step; //treinamento da rede for (int iteracao = 0; iteracao < max; iteracao++) { if (iteracao > value) { value += step; progressBar1.Value += 1; } rede.treinar(entradas, saidas); } //desenha curva apartir da rede treinada float py = 0f; for (int px = 0; px < W; px += 2) { py = H * rede.update(new float[] { px / W })[0]; gp.FillEllipse(Brushes.Red, px - 2, py - 2, 4, 4); } pictureBox1.Image = bmp; progressBar1.Value = 100; update_buttons(true); thr.Abort(); }
private void button8_Click(object sender, EventArgs e) { OpenFileDialog abrir = new OpenFileDialog(); abrir.Title = "Abrir RedeNeural"; abrir.Filter = "Formato RN (.rn)|*.rn|All files (*.*)|*.*"; if (abrir.ShowDialog() != DialogResult.OK) { return; } rede = RN.Carregar(abrir.FileName); }
public static RN Carregar(string path) { try { XmlSerializer reader = new XmlSerializer(typeof(RN)); StreamReader file = new StreamReader(path); RN nc = (RN)reader.Deserialize(file); file.Close(); return(nc); } catch (Exception e) { Console.WriteLine(e.Message); return(null); } }
private void treinar_rede() { progressBar1.Value = 0; int n1 = int.Parse(textBox5.Text); int n2 = int.Parse(textBox2.Text); int n3 = int.Parse(textBox3.Text); int n4 = int.Parse(textBox4.Text); N.e = float.Parse(textBox6.Text); rede = new RN(120, n1, n2, n3); List <float[]> entradas = new List <float[]>(); List <float[]> saidas = new List <float[]>(); //for (int c = 0; c < casos.Count; c++) for (int c = 0; c < numeros.Count; c++) { //bool[][] caso = casos.lista_caso[c]; bool[][] caso = numeros.lista_caso[c]; float[] ent = new float[12 * 10]; for (int i = 0; i < 12; i++) { for (int j = 0; j < 10; j++) { int idx = 10 * i + j; //tabindex if (caso[i][j]) { ent[idx] = 1.0f; } } } entradas.Add(ent); //saidas.Add(new float[] { (float)casos.lista_numero[c] / 10f }); float[] vetor = new float[n3]; vetor[numeros.lista_numero[c]] = 1.0f; saidas.Add(vetor); } float step = n4 / 100f; float value = step; for (int i = 0; i < n4; i++) { if (i > value) { value += step; progressBar1.Value += 1; } rede.treinar(entradas, saidas); } progressBar1.Value = 100; update_buttons(true); thr.Abort(); }