Example #1
0
        /// <summary>
        /// </summary>
        /// <param name="nm">Режима работы сети (Train, Test, Demo).</param>
        /// <param name="LayerInput">Входной слой.</param>
        public Network(NetworkMode nm, LayerInput LayerInput)
        {
            int[] numbNeuronLayers = { 1800, 120, 84, 2 };
            input_layer = LayerInput;
            Console.WriteLine($"Слой свертки...");
            first_convolution = new ConvolutionFirst();
            Console.WriteLine($"Слой субдескритизации...");
            first_subsamping = new SubsampingFirst();
            Console.WriteLine($"Слой свертки...");
            second_convolution = new ConvolutionSecond();
            Console.WriteLine($"Слой субдескритизации...");
            second_subsamping = new SubsampingSecond();
            int numbLayerHiddens = 2;

            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, $"LayerHiddenConvolution{i}");
            }
            Console.WriteLine($"Полносвязный слой output...");
            output_layer = new LayerOutput(numbNeuronLayers[numbNeuronLayers.Length - 1], numbNeuronLayers[numbNeuronLayers.Length - 2],
                                           NeuronType.Output, "LayerOutputConvolution");
            fact = new double[numbNeuronLayers[numbNeuronLayers.Length - 1]];
        }
Example #2
0
        public void TestDeserialize()
        {
            var path     = "D:\\1.xml";
            var layInput = (LayerInput)LayerInput.Deserialize(path);

            Assert.AreEqual(layInput.ShapeIn.Rows, 4);
        }
Example #3
0
        public void TestActivated()
        {
            var inputLayer = new LayerInput(new DataShape(4, 1));

            var(item1, item2) = inputLayer.Activated(new DenseMatrix(4, 1));
            Assert.AreEqual(item1, item2);
        }
Example #4
0
        public void TestSerializer()
        {
            var path       = "D:\\1.xml";
            var inputLayer = new LayerInput(new DataShape(4, 1));

            inputLayer.Serializer(path);
            Assert.IsTrue(File.Exists(path));
        }
Example #5
0
        /// <summary>
        /// Creates instance of layer input for the specified layer.
        /// </summary>
        private static IDatasourceInput ReopenLayerInput(ILayer layer, IDatasourceInput oldInput)
        {
            if (layer == null)
            {
                return(null);
            }

            var input = new LayerInput(layer);

            var vector = oldInput as IVectorInput;

            if (vector != null)
            {
                input.SelectedOnly = vector.SelectedOnly;
            }

            return(input);
        }
Example #6
0
        private void AddLayerInput(int neurons)
        {
            var layer = new LayerInput
            {
                Neurons = new List <Neuron>(),
            };

            for (var i = 1; i <= neurons; i++)
            {
                var neuron = new NeuronInput
                {
                    Connections1 = new List <Connection>(),
                    Connections2 = new List <Connection>(),
                };
                neuron.Bias = Math2.Range(-1f, 1);
                layer.Neurons.Add(neuron);
            }
            this.Layers.Add(layer);
        }
Example #7
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();
 }
Example #8
0
        public void CreateLayNet(TrainParameters layNetParameter)
        {
            LayerNet = new List <Layer>();
            var inputLayer = new LayerInput(InputDataShape)
            {
                LayerIndex = 0
            };

            LayerNet.Add(inputLayer);
            layNetParameter.InterLayerStructs.ToList().ForEach(a =>
            {
                var dataShape = LayerNet.Last().ShapeOut;
                switch (a.LayerType)
                {
                case LayerType.FullConnectLayer:
                    var fullConnectedLayer = new LayerFullConnected(dataShape, a.NeureCount)
                    {
                        LayerIndex = LayerNet.Count
                    };
                    LayerNet.Add(fullConnectedLayer);
                    break;

                case LayerType.PoolingLayer:
                    var poolingLayer = new LayerPooling(dataShape)
                    {
                        LayerIndex = LayerNet.Count
                    };
                    LayerNet.Add(poolingLayer);
                    break;
                }
            });
            var outputLayer = new LayerOutput(LayerNet.Last().ShapeOut, OutputDataShape)
            {
                LayerIndex = LayerNet.Count
            };

            LayerNet.Add(outputLayer);
        }
Example #9
0
        public void TestInitial()
        {
            var inputLayer = new LayerInput(new DataShape(4, 1));

            Assert.AreNotEqual(inputLayer, null);
        }