private void TrainBtn_Click(object sender, EventArgs e) { if (locked) { return; } double a; double t; try { a = Convert.ToDouble(Tb1.Text); t = Convert.ToDouble(Tb2.Text); } catch { ErrorAnimator.ShowSync(error); return; } error.Hide(); locked = true; pm = new PerceptronModel(t, a, Input1.GetArray().Length, output1.GetArray().Length, this); for (int i = 1; i <= MAX; i++) { double[] tmpIN = new double[Input1.GetArray().Length]; double[] tmpOUT = new double[output1.GetArray().Length]; bool[] tmp; DrawControl.DrawBox d1 = (DrawControl.DrawBox) this.Controls.Find("Input" + i, true)[0]; DrawControl.DrawBox d2 = (DrawControl.DrawBox) this.Controls.Find("output" + i, true)[0]; d1.locked = true; d2.locked = true; Log.AppendText("Pattern " + i + " \n"); tmp = d1.GetArray(); for (int j = 0; j < tmp.Length; j++) { tmpIN[j] = (tmp[j]) ? 1 : 0; } tmp = d2.GetArray(); for (int j = 0; j < tmp.Length; j++) { tmpOUT[j] = (tmp[j]) ? 1 : -1; } Log.AppendText("(" + String.Join(",", tmpIN) + ")\n(" + String.Join(",", tmpOUT) + ")\n\n"); Data d = new Data(tmpIN, tmpOUT); pm.q.Enqueue(d); } pm.GenerateWeight(); pm.Train(); }
private void TrainBtn_Click(object sender, EventArgs e) { if (locked) { return; } locked = true; ResetBtn.ButtonText = "Stop"; error.Hide(); double a, t, w1, w2; int m; try { a = Convert.ToDouble(Tb1.Text); t = Convert.ToDouble(Tb2.Text); w1 = Convert.ToDouble(Tb3.Text); w2 = Convert.ToDouble(Tb4.Text); m = Convert.ToInt16(Tb5.Text); } catch { ErrorAnimator.ShowSync(error); return; } error.Hide(); ShowLog("Create TLU model with\n"); ShowLog("Max traing round:" + m); ShowLog("\nLearning Rate:" + a); ShowLog("\nThreshold:" + t); ShowLog("\nw1:" + w1); ShowLog("\nw2:" + w2); ShowLog("\nTraining Data:\n"); tlu = new TLUmodel(t, a, new Data(w1, w2), m, this); for (int i = 0; i < XYgraph.Map.Length; i++) { if (XYgraph.Map[i] != -1) { Point p = XYgraph.ConvertToXY(i); Console.WriteLine(p.X + " " + p.Y + " v=" + XYgraph.Map[i]); Data tmp = new Data(p.X * 0.5, p.Y * 0.5, XYgraph.Map[i]); tlu.q.Enqueue(tmp); ShowLog("( " + (p.X * 0.5) + " , " + (p.Y * 0.5) + " ) value=" + XYgraph.Map[i] + "\n"); } } if (tlu.q.Count > 0) { tlu.Train(); } else { ReleaseBtn(); } }