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