示例#1
0
        public void TestDeserialize()
        {
            var path      = "D:\\3.xml";
            var layOutput = (LayerOutput)LayerOutput.Deserialize(path);

            Assert.AreEqual(layOutput.Perceptrons[0].WeightArray.Length, 5);
        }
示例#2
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]];
        }
示例#3
0
        public void TestSerializer()
        {
            var path        = "D:\\3.xml";
            var outputLayer = new LayerOutput(new DataShape(5, 1), 1);

            outputLayer.Serializer(path);
            Assert.IsTrue(File.Exists(path));
        }
 /// <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]];
 }
示例#5
0
        private void AddLayerOutput(int neurons)
        {
            var layer = new LayerOutput
            {
                Neurons = new List <Neuron>(),
            };

            for (var i = 1; i <= neurons; i++)
            {
                var neuron = new NeuronOutput
                {
                    Connections1 = new List <Connection>(),
                    Connections2 = new List <Connection>(),
                };
                neuron.Bias = Math2.Range(-1f, 1);
                layer.Neurons.Add(neuron);
            }
            this.Layers.Add(layer);
        }
示例#6
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);
        }
示例#7
0
        public void TestInitial()
        {
            var outputLayer = new LayerOutput(new DataShape(5, 1), 1);

            Assert.AreNotEqual(outputLayer, null);
        }