Пример #1
0
        // Продублировать матрицу.
        private Mfn Dublicat()
        {
            Mfn result = new Mfn(_layers[0].Dublicat());

            for (int i = 1; i < _layers.Length; i++)
            {
                result.AddLayer(_layers[i].Dublicat());
            }
            return(result);
        }
Пример #2
0
        /// <summary>
        /// Обучить сеть. Вторая перегрузка. Обучение происходит на Count из которых выбирается наилучший (с наименьшей ошибкой).
        /// </summary>
        /// <param name="Count">Количество обучаемых образцов.</param>
        /// <param name="values">Данные обучения.</param>
        /// <param name="norm">Норма корректировки.</param>
        /// <param name="inertial">Инерционный коэффициент.</param>
        /// <param name="epsilon">Погрешность обучения.</param>
        public Mfn Learning(int Count, PairValue[] values, double norm = 0.7, double inertial = 0.3, double epsilon = 0.001)
        {
            Mfn[]  bufer = new Mfn[Count];
            int    index = 0;
            double error = double.MaxValue;

            for (int i = 0; i < Count; i++)
            {
                bufer[i] = Dublicat();
                bufer[i].FillW();
                bufer[i].Learning(values, norm, inertial, epsilon);
                if (bufer[i].Error < error)
                {
                    error = bufer[i].Error;
                    index = i;
                }
            }
            return(bufer[index]);
        }