static void Main(string[] args) { string[] tr = { "112111222123332", "112111222123332", "112111222122322" }; string[] fal = { "221222111211111", "111111222123432", "111111111111111", "222222222222222", "222222111222222", "122212111212221", "112112111221112", "111111222212222", "222112221122211", "222112221122211", "122211222112221", "112112111212121" }; Console.Write("Введите количество эпох = "); int epoch = Convert.ToInt32(Console.ReadLine()); string trainingRes; Perceptron p = new Perceptron(15); trainingRes = Train(p, epoch, tr, fal); for (int j = 0; j < epoch / 5; j++) { string f = ""; if (j % 10 != 0) { for (int i = 0; i < 15; i++) { f += p.rnd.Next(0, 9); } } else { if (j % 20 == 0) { Console.WriteLine("Это false"); f = fal[p.rnd.Next(fal.Length)]; } else { Console.WriteLine("Это true"); f = tr[p.rnd.Next(tr.Length)]; } } WritePyramid(f, p.Feed(f)); } Console.WriteLine("\n" + trainingRes + "\n"); WritePerc(p); Console.ReadKey(); }
public static string Train(Perceptron p, int t, string[] tr, string[] fal) { int wrongfalse = 0; int wrongpos = 0; int right = 0; int rightFirst = 0; int rightSec = 0; int f = 0; bool x; for (int i = 0; i < t; i++) { if (i % 2 != 0) { f = p.rnd.Next(fal.Length); x = p.Feed(fal[f]); WritePyramid(fal[f], x); if (p.Feed(fal[f])) { Console.WriteLine("Неправильно - ложное срабатывание\n\n"); wrongpos++; p.DecreaseWhereNeeded(fal[f]); } else { if (i > t / 2) { rightSec++; } else { rightFirst++; } right++; } } else { f = p.rnd.Next(tr.Length); x = p.Feed(tr[f]); WritePyramid(tr[f], x); if (!p.Feed(tr[f])) { Console.WriteLine("Неправильно - не узнал\n\n"); wrongfalse++; p.IncreaseWhereNeeded(tr[f]); } else { if (i > t / 2) { rightSec++; } else { rightFirst++; } right++; } } } string res = "Результаты тренировки:\nПравильных = " + right + "\nЛожных срабатываний = " + wrongpos + "\nНе распознано = " + wrongfalse + "\n%Правильных = " + (right * 100 / t) + "%" + "\n%Правильных в 1 половине = " + (rightFirst * 100 / (t / 2)) + "%" + "\n%Правильных во 2 половине = " + (rightSec * 100 / (t / 2)) + "%"; return(res); }