protected override ICollection<ConnectableLayer> CreateLayers()
        {
            int hiddenLayersCount = HiddenLayers != null ? HiddenLayers.Count : 0;
            var layers = new List<ConnectableLayer>(1 + hiddenLayersCount + 1);

            var inputLayer = new InputLayer(InputSize).Connectable();
            layers.Add(inputLayer);

            var prevLayer = inputLayer;

            if (hiddenLayersCount != 0)
            {
                foreach (var hl in HiddenLayers)
                {
                    var hiddenLayer = hl.Connectable();
                    prevLayer.LowerLayers.Add(hiddenLayer);
                    layers.Add(hiddenLayer);
                    prevLayer = hiddenLayer;
                }
            }

            var outputLayer = OutputLayer.Connectable();
            prevLayer.LowerLayers.Add(outputLayer);
            layers.Add(outputLayer);

            return layers;
        }
예제 #2
0
        private static void TestNet()
        {
            var initRule = new NoisedWeightInitializationRule();
            var gdRule = new GradientDescentRule();

            var input = new InputLayer(6).Connectable();
            var mid1 = new ActivationLayer(9, new SigmoidActivationFunction(), initRule, gdRule).Connectable();
            var mid2 = new ActivationLayer(11, new SigmoidActivationFunction(), initRule, gdRule).Connectable();
            var mid3 = new ActivationLayer(5, new SigmoidActivationFunction(), initRule, gdRule).Connectable();
            var output = new ActivationLayer(2, new LinearActivationFunction(), initRule, gdRule).Connectable();

            input.LowerLayers.Add(mid1);
            input.LowerLayers.Add(mid2);
            mid1.LowerLayers.Add(output);
            mid3.LowerLayers.Add(output);
            mid2.LowerLayers.Add(mid3);

            var layers = new[] { input, mid1, mid2, mid3, output };

            var groups = new GroupedLayers(layers);

            Console.WriteLine(string.Join(" - ", from g in groups.LayerGroups
                                               select string.Join(",", g.Select(l => l.Size))));

            var cpuNN = new CPUNeuralNetwork(layers);

            cpuNN.Iteration();
        }