/// <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]];
 }
Beispiel #2
0
 /// <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();
 }