Exemplo n.º 1
0
        static void Real()
        {
            var inputLayer  = new InputLayer3D(1, 1, 1);
            var outputLayer = new OutputLayer(1)
            {
                ActivationFunction = new ConstOutputArrayFunction()
            };
            var dataProvider = new FunctionProvider();

            InitializeTrainingData(dataProvider.TrainData);
            var perceptron1 = new PerceptronLayer(10, 2)
            {
                ActivationFunction = new SigmoidFunction()
            };
            var perceptron2 = new PerceptronLayer(10, 10)
            {
                ActivationFunction = new SigmoidFunction()
            };
            var perceptron3 = new PerceptronLayer(8, 10)
            {
                ActivationFunction = new SigmoidFunction()
            };
            var perceptron4 = new PerceptronLayer(6, 8)
            {
                ActivationFunction = new SigmoidFunction()
            };
            var perceptron5 = new PerceptronLayer(2, 6)
            {
                ActivationFunction = new SigmoidFunction()
            };

            MultiLayerPerceptron network = new MultiLayerPerceptron
            {
                InputLayer   = inputLayer,
                OutputLayer  = outputLayer,
                DataProvider = dataProvider
            };

            network.HiddenLayers.Add(perceptron1);
            network.HiddenLayers.Add(perceptron2);
            network.HiddenLayers.Add(perceptron3);
            network.HiddenLayers.Add(perceptron4);
            network.HiddenLayers.Add(perceptron5);

            var trainer = new FCTrainer(network, 10, 1, dataProvider);

            trainer.Train(1);
            var error = network.Test(1);
        }
Exemplo n.º 2
0
        static void OneTrainingData()
        {
            var inputLayer  = new InputLayer3D(1, 1, 3);
            var outputLayer = new OutputLayer(2)
            {
                ActivationFunction = new ConstOutputArrayFunction()
            };
            var weight1 = new List <Array3D> {
                new Array3D(0.1, 0.3), new Array3D(0.3, 0.1)
            };
            var weight2 = new List <Array3D> {
                new Array3D(0.4, 0.5), new Array3D(0.3, 0.5)
            };
            var perceptron1 = new PerceptronLayer(weight1)
            {
                ActivationFunction = new SigmoidFunction()
            };
            var perceptron2 = new PerceptronLayer(weight2)
            {
                ActivationFunction = new SigmoidFunction()
            };
            var dataProvider = new FunctionProvider
            {
                TrainData =
                {
                    new TrainingData <Array3D, Array3D> {
                        Input = new Array3D(0.3,                         0.4, 0.5), Expected = new Array3D(0.2, 0.6)
                    },
                    new TrainingData <Array3D, Array3D> {
                        Input = new Array3D(0.2, 0.4, 0.7), Expected = new Array3D(0.1, 0.8)
                    }
                }
            };

            var network = new MultiLayerPerceptron
            {
                InputLayer   = inputLayer,
                OutputLayer  = outputLayer,
                DataProvider = dataProvider
            };

            network.HiddenLayers.Add(perceptron1);
            network.HiddenLayers.Add(perceptron2);

            var trainer = new FCTrainer(network, 2, 1, dataProvider);

            trainer.Train(100);
        }
Exemplo n.º 3
0
        private static void OneData()
        {
            var trainImage = @"C:\Programming\ConvolutionNeuralNetwork\Images\Train\One\One_0.jpg";
            var expected   = new Array3D(0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
            var network    = new ConvolutionNN
            {
                InputLayer   = new InputLayer3D(28, 28),
                OutputLayer  = new OutputLayer(10),
                DataProvider = new OneIP(trainImage, expected)
            };

            network.HiddenLayers.Add(new ConvolutionalLayer(3, 2, 2, 3));
            network.HiddenLayers.Add(new PoolingLayer());
            network.HiddenLayers.Add(new ConvolutionalLayer(3, 2, 2, 3));
            network.HiddenLayers.Add(new PoolingLayer());
            network.HiddenLayers.Add(new NarrowLayer());
            network.HiddenLayers.Add(new PerceptronLayer(100, 147));
            network.HiddenLayers.Add(new PerceptronLayer(50, 100));
            network.HiddenLayers.Add(new PerceptronLayer(10, 50));

            var trainer = new FCTrainer(network, 10, 1, network.DataProvider);

            trainer.Train(1000);
        }
Exemplo n.º 4
0
        static void Xor()
        {
            const int batchSize = 4;
            const int epochSize = 16;

            var inputLayer  = new InputLayer3D(1, 1, 1);
            var outputLayer = new OutputLayer(1)
            {
                ActivationFunction = new ConstOutputArrayFunction()
            };
            var dataProvider = new FunctionProvider
            {
                TrainData =
                {
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(0, 0), Expected = new Array3D(0.0)
                    },
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(0, 1), Expected = new Array3D(1.0)
                    },
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(1, 0), Expected = new Array3D(1.0)
                    },
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(1, 1), Expected = new Array3D(0.0)
                    }
                },
                TestData = { new TrainingData <Array3D, Array3D>
                             {
                                 Input = new Array3D(0, 0), Expected = new Array3D(0)
                             },
                             new TrainingData <Array3D, Array3D>
                             {
                                 Input = new Array3D(0, 1), Expected = new Array3D(1)
                             },
                             new TrainingData <Array3D, Array3D>
                             {
                                 Input = new Array3D(1, 0), Expected = new Array3D(1)
                             },
                             new TrainingData <Array3D, Array3D>
                             {
                                 Input = new Array3D(1, 1), Expected = new Array3D(0)
                             } },
                IsQueue = false
            };
            var oneData = new FunctionProvider {
                TrainData =
                {
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(0, 0), Expected = new Array3D(0.0)
                    },
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(1, 1), Expected = new Array3D(0.0)
                    }
                }, IsQueue = false
            };
            var function = new FunctionProvider(x => Math.Pow(x, 2));

            var weight1 = new List <Array3D> {
                new Array3D(0.1, 0.3), new Array3D(0.3, 0.1)
            };
            var weight2 = new List <Array3D> {
                new Array3D(0.4, 0.5)
            };
            var perceptron1 = new PerceptronLayer(5, 2)
            {
                ActivationFunction = new TanhActivationFunction()
            };

            perceptron1.Trainer = new MiniBatchPerceptronTrainer(perceptron1.Neurals, false)
            {
                BatchSize = batchSize, ActivationFunction = new TanhActivationFunction(), LearningRate = 0.1, Momentum = 0.1
            };
            var perceptron2 = new PerceptronLayer(1, 5)
            {
                ActivationFunction = new TanhActivationFunction()
            };

            perceptron2.Trainer = new MiniBatchPerceptronTrainer(perceptron2.Neurals, true)
            {
                BatchSize = batchSize, ActivationFunction = new TanhActivationFunction(), LearningRate = 0.1, Momentum = 0.1
            };

            var network = new MultiLayerPerceptron
            {
                InputLayer   = inputLayer,
                OutputLayer  = outputLayer,
                DataProvider = dataProvider
            };

            network.HiddenLayers.Add(perceptron1);
            network.HiddenLayers.Add(perceptron2);

            var trainer = new FCTrainer(network, epochSize, batchSize, dataProvider);

            trainer.Train(200);
        }
Exemplo n.º 5
0
        private void InitializeNetwork()
        {
            var inputLayer  = new InputLayer3D(1, 1, 1);
            var outputLayer = new OutputLayer(1)
            {
                ActivationFunction = new ConstOutputArrayFunction()
            };
            var dataProvider = new FunctionProvider
            {
                TrainData =
                {
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(0, 0), Expected = new Array3D(0.0)
                    },
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(0, 1), Expected = new Array3D(1.0)
                    },
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(1, 0), Expected = new Array3D(1.0)
                    },
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(1, 1), Expected = new Array3D(0.0)
                    }
                },
                TestData = { new TrainingData <Array3D, Array3D>
                             {
                                 Input = new Array3D(0, 0), Expected = new Array3D(0)
                             },
                             new TrainingData <Array3D, Array3D>
                             {
                                 Input = new Array3D(0, 1), Expected = new Array3D(1)
                             },
                             new TrainingData <Array3D, Array3D>
                             {
                                 Input = new Array3D(1, 0), Expected = new Array3D(1)
                             },
                             new TrainingData <Array3D, Array3D>
                             {
                                 Input = new Array3D(1, 1), Expected = new Array3D(0)
                             } },
                IsQueue = false
            };
            var oneData = new FunctionProvider
            {
                TrainData =
                {
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(0, 0), Expected = new Array3D(0.0)
                    },
                    new TrainingData <Array3D, Array3D>
                    {
                        Input = new Array3D(1, 1), Expected = new Array3D(0.0)
                    }
                },
                IsQueue = false
            };
            var function = new FunctionProvider(x => Math.Pow(x, 2));

            var perceptron1 = new PerceptronLayer(10, 1)
            {
                ActivationFunction = new TanhActivationFunction()
            };

            perceptron1.Trainer = new MiniBatchPerceptronTrainer(perceptron1.Neurals, false)
            {
                BatchSize = BatchSize, ActivationFunction = new TanhActivationFunction(), LearningRate = 0.1, Momentum = 0.1
            };
            var perceptron2 = new PerceptronLayer(1, 10)
            {
                ActivationFunction = new TanhActivationFunction()
            };

            perceptron2.Trainer = new MiniBatchPerceptronTrainer(perceptron2.Neurals, true)
            {
                BatchSize = BatchSize, ActivationFunction = new TanhActivationFunction(), LearningRate = 0.1, Momentum = 0.1
            };

            Network = new MultiLayerPerceptron
            {
                InputLayer   = inputLayer,
                OutputLayer  = outputLayer,
                DataProvider = function
            };
            Network.HiddenLayers.Add(perceptron1);
            Network.HiddenLayers.Add(perceptron2);

            Trainer = new FCTrainer(Network, EpochSize, BatchSize, function);
        }