// Продублировать матрицу. 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); }
/// <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]); }