public void AddNewPerc(string name) // метод для добавления нового персептрона { NOuts++; var newPerc = new Perc(name); // создание объекта персептрон for (int j = 0; j < NInputs; j++) { Link link = new Link(Inputs[j], 0); Links.Add(link); newPerc.Links.Add(link); } Percs.Add(newPerc); }
public void TeachFromInput(string name) // метод для обучения нейросети { int index = Percs.IndexOf(Percs.First(x => x.Name == name)); //коэффициент быстроты обучения сети float etha = 0.4f; int[] X = new int[NInputs]; int[] D = new int[NOuts]; int[] Y = new int[NOuts]; int[] E = new int[NOuts]; for (int i = 0; i < NInputs; i++) { if (Inputs[i].Index < 8 * 8) { X[i] = Inputs[i].Value; } } D[index] = 1; for (int i = 0; i < NOuts; i++) { Y[i] = Percs[i].Out; E[i] = D[i] - Y[i]; } for (int i = 0; i < NOuts; i++) { for (int j = 0; j < Percs[i].Links.Count; j++) { Percs[i].Links[j].Weight += etha * E[i] * X[j]; // увеличение весов } } }