/// <summary> /// </summary> /// <param name="nm">Режима работы сети (Train, Test, Demo).</param> /// <param name="numbLayerHiddens">Количество слоев сети.</param> /// <param name="numbNeuronLayers">Массив из количества нейронов в слоях.</param> public Network(NetworkMode nm, int numbLayerHiddens, int[] numbNeuronLayers, LayerInput LayerInput) { input_layer = LayerInput; hidden_layer = new LayerHidden[numbLayerHiddens]; for (int i = 0; i < numbLayerHiddens; i++) { Console.WriteLine($"Слой персептрона {i}..."); hidden_layer[i] = new LayerHidden(numbNeuronLayers[i + 1], numbNeuronLayers[i], NeuronType.Hidden, $"LayerHidden{i}"); } Console.WriteLine($"Слой персептрона output..."); output_layer = new LayerOutput(numbNeuronLayers[numbNeuronLayers.Length - 1], numbNeuronLayers[numbNeuronLayers.Length - 2], NeuronType.Output, nameof(output_layer)); fact = new double[numbNeuronLayers[numbNeuronLayers.Length - 1]]; }
/// <summary> /// Конструктор. /// </summary> /// <param name="non">Число нейронов текущего слоя.</param> /// <param name="nopn">Число нейронов предыдущего слоя.</param> /// <param name="nt">Тип нейрона.</param> /// <param name="type">Название слоя.</param> protected Layer(int non, int nopn, NeuronType nt, string type) { numofneurons = non; numofprevneurons = nopn; Neurons = new Neuron[non]; Console.WriteLine($"Чтение весов"); double[,] Weights = WeightInitialize(MemoryMode.GET, type); Console.WriteLine($"Чтение весов окончено"); lastdeltaweights = Weights; for (int i = 0; i < non; ++i) { double[] temp_weights = new double[nopn + 1]; for (int j = 0; j < nopn + 1; ++j) { temp_weights[j] = Weights[i, j]; } Neurons[i] = new Neuron(null, temp_weights, nt); } output = new LayerInput(); }