public bool Train(List <uint> layers, SortedDictionary <string, List <ComplexMoments> > moments, int maxIters = 100000, double eps = 0.1, double speed = 0.1) { ANeuralNetwork network = new ANeuralNetwork(layers, ANeuralNetwork.ActivationType.BipolarSygmoid, 1); var inputs = new List <List <double> >(); var outputs = new List <List <double> >(); var max = int.MinValue; foreach (var value in moments) { if (value.Value.Count > max) { max = value.Value.Count; } } int iter = 0; int counter = 0; while (iter < max && counter < layers[^ 1]) { for (var i = 0; i < moments.Keys.Count; ++i) { var output = new List <double>(); for (var j = 0; j < moments.Keys.Count; j++) { output.Add(j == i ? 1 : 0); } counter++; if (moments[i.ToString()].Count - 1 <= iter) { continue; } var input = moments[i.ToString()][iter].ToListOfDouble(); inputs.Add(input); outputs.Add(output); counter--; iter++; } } Console.WriteLine("Данные на входе, начинаем обучение"); network.BackPropTraining(inputs, outputs, maxIters, eps, speed, true, 1); network.Save("..\\..\\..\\..\\savedData.txt"); return(true); }
static void BackPropagation() { List <uint> Configurate = new List <uint>(); //Создаем конфигурацию сети, состоящую из трех слоев Configurate.Add(2); //1-ой входной слой сети с двумя нейронами //2-ой слой сети с двумя нейронами Configurate.Add(5); Configurate.Add(3); Configurate.Add(1);//4-й выходнрой слой сети с одним нейроном ANeuralNetwork NR = new ANeuralNetwork(Configurate, ANeuralNetwork.ActivationType.PositiveSygmoid, 1); List <List <double> > inputs = new List <List <double> >(); List <List <double> > outputs = new List <List <double> >(); //создаем пустые вектора под входные и выходные данные NR.LoadData("..\\..\\..\\..\\PerceptronData.txt", inputs, outputs); // выгружаем данные из файла // инцилизируем веса сети случайным образом NR.BackPropTraining(inputs, outputs, 3000000, 0.01, 1, true); //Обучение сети метдом оьбратного распространения ошибки Console.WriteLine(NR.GetType()); //в каждые 100 итераций выводит данные в строку NR.Save("..\\..\\..\\..\\PerceptronSavedData.txt"); //сохраняем в файл }