Esempio n. 1
0
        static void Main(string[] args)
        {
            double[] p    = new double[10];
            IMLData  data = new BasicMLData(p);

            var network     = CreateNetwork();
            var trainingSet = GetTrainingSet();
            //var train = new ResilientPropagation(network, trainingSet);
            //var train = new Backpropagation(network, trainingSet, 0.7, 0.2);
            //var train = new ManhattanPropagation(network, trainingSet, 0.001);
            //var train = new ScaledConjugateGradient(network, trainingSet);
            //var train = new LevenbergMarquardtTraining(network, trainingSet);
            var train = new QuickPropagation(network, trainingSet, 2.0);


            int epoch = 1;

            do
            {
                train.Iteration();
                Console.WriteLine($"Iteration No: {epoch++}, Error: {train.Error}");
            }while (train.Error > 0.01);

            foreach (var item in trainingSet)
            {
                var output = network.Compute(item.Input);
                Console.WriteLine($"Input: {item.Input[0]}, {item.Input[1]} Ideal: {item.Ideal[0]} Actual: {output[0]}");
            }
            Console.ReadLine();
        }
Esempio n. 2
0
        private static Propagation GetTraining(BasicNetwork network, BasicMLDataSet trainingSet)
        {
            //var train = new ResilientPropagation(network, trainingSet);
            //var train = new Backpropagation(network, trainingSet, 0.7, 0.2);
            //var train = new ManhattanPropagation(network, trainingSet, 0.001);
            //var train = new ScaledConjugateGradient(network, trainingSet);
            //var train = new LevenbergMarquardtTraining(network, trainingSet);
            var training = new QuickPropagation(network, trainingSet, 2.0);

            return(training);
        }
Esempio n. 3
0
        public static BasicNetwork TrainNetwork(string trainSetLocation, string path2SaveModel, string trainingHistoryLocation, int numberOfEpochs, double errorThreshold, NetworkTrainer trainer)
        {
            IMLDataSet trainingDataSet = null;
            List <NeuralLayerDescriptor> descriptor = NetworkTrainingInitializer(trainSetLocation, out trainingDataSet);
            var    network = NetworkCreator.CreateNetwork(descriptor);
            ITrain train   = null;

            switch (trainer)
            {
            case NetworkTrainer.BackProp: train = new Backpropagation(network, trainingDataSet);
                break;

            case NetworkTrainer.ResilientBackProp: train = new ResilientPropagation(network, trainingDataSet);
                break;

            case NetworkTrainer.Quick:
                train = new QuickPropagation(network, trainingDataSet);
                break;

            case NetworkTrainer.ScaledConjugateGradient: train = new ScaledConjugateGradient(network, trainingDataSet);
                break;
            }


            int epoch = 0;

            using (System.IO.StreamWriter file =
                       new System.IO.StreamWriter(trainingHistoryLocation))
            {
                do
                {
                    train.Iteration();
                    Console.WriteLine("Epoch #" + epoch + " Error:" + train.Error);
                    file.WriteLine(train.Error);
                    epoch++;
                } while ((epoch < numberOfEpochs) && (train.Error > errorThreshold));
            }

            var serializer = new BinaryFormatter();

            using (var s = new FileStream(path2SaveModel, FileMode.Create))
            {
                serializer.Serialize(s, network);
            }
            return(network);
        }