コード例 #1
0
        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);
        }
コード例 #2
0
        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");                 //сохраняем в файл
        }