/// <summary> /// Добавить новый слой. Вторая перегрузка. /// </summary> /// <param name="w">Матрица весов вставляемого слоя.</param> /// <param name="activation">Функция активации вставляемого слоя.</param> /// <param name="activationD">Производная пороговой функции вставляемого слоя.</param> public void AddLayer(double[,] w, Func <double, double> activation, Func <double, double> activationD = null) { Perceptron lastLayer = _layers[_layers.Length - 1]; if (w.GetLength(1) != lastLayer.OutputCount && w.GetLength(1) != lastLayer.OutputCount + 1) { throw new ArgumentException("AddLayer: Количество входных элементов текущего слоя не соответствует количеству выходных элементов последнего слоя.", "w"); } Array.Resize(ref _layers, _layers.Length + 1); _layers[_layers.Length - 1] = new Perceptron(w, activation, activationD); }
/// <summary> /// Добавить новый слой. Третья перегрузка. /// </summary> /// <param name="p">Персептрон вставляемого слоя.</param> public void AddLayer(Perceptron p) { Perceptron lastLayer = _layers[_layers.Length - 1]; if (p.InputCount != lastLayer.OutputCount && p.InputCount != lastLayer.OutputCount + 1) { throw new ArgumentException("AddLayer: Количество входных элементов текущего слоя не соответствует количеству выходных элементов последнего слоя.", "w"); } Array.Resize(ref _layers, _layers.Length + 1); _layers[_layers.Length - 1] = p; }
/// <summary> /// Конструктор. Третья перегрузка. /// </summary> /// <param name="p">Персептрон первого слоя.</param> public Mfn(Perceptron p) { _layers = new Perceptron[1]; _layers[0] = p; }
/// <summary> /// Конструктор. Вторая перегрузка. /// </summary> /// <param name="w">Матрица весов первого слоя.</param> /// <param name="activation">Функция активации первого слоя.</param> /// <param name="activationD">Производная пороговой функции первого слоя.</param> public Mfn(double[,] w, Func <double, double> activation, Func <double, double> activationD = null) { _layers = new Perceptron[1]; _layers[0] = new Perceptron(w, activation, activationD); }