Example #1
0
        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);
        }
Example #2
0
        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];  // увеличение весов
                }
            }
        }