public ConvolutionalLayer(int mapsCount, int mapWidth, int mapHeight, int inputsPerNeuron, KernelParams kernel)
        {
            // инициализаци¤ вручную. —оздаетс¤ пустой слой, затем карты признаков и из них копируютс¤ ссылки на нейроны и весы самого сло¤
            FeatureMaps = new FeatureMap[mapsCount];
            Neurons = new Neuron[mapWidth*mapHeight*mapsCount];
            Weights = new Weight[inputsPerNeuron*mapsCount];

            for (int fi = 0, w = 0, n = 0; fi < FeatureMaps.Length; fi++)
            {
                // создаем очередную карту признаков - 2D слой
                FeatureMaps[fi] = new FeatureMap(mapWidth, mapHeight, inputsPerNeuron);

                // заполн¤ем из новой карты признаков основные массивы сло¤ - нейроны и веса
                foreach (var neuron in FeatureMaps[fi].Neurons)
                    Neurons[n++] = neuron;
                foreach (var weight in FeatureMaps[fi].Weights)
                    Weights[w++] = weight;
            }

            _kernel = kernel;
        }