示例#1
0
        public List<Tuple<int, double, double>> Train(int iterationCount, double learnRate, double momentum)
        {
            List<Tuple<int, double, double>> error = new List<Tuple<int, double, double>>();

            var training = new Backpropagation(network, trainingData, learnRate, momentum);
            training.BatchSize = 1;

            for (int i = 0; i < iterationCount; ++i)
            {
                training.Iteration(1);
                network.CalculateError(validationData);
                double val_error = network.CalculateError(validationData);
                error.Add(new Tuple<int, double, double>(i, training.Error, val_error));
                //if(i%100 == 0)
                    //Console.WriteLine("{0}: [{1}; {2}]", i, training.Error, val_error);
            }

            training.FinishTraining();

            return error.Skip(100).ToList();
        }
示例#2
0
        public virtual void TrainNetwork()
        {
            var train = new Backpropagation(Network.Model, TrainingSet, Parameters.LearingCoefficient, Parameters.InertiaCoefficient)
            {
                BatchSize = 1
            };

            var iteration = 1;

            var errors = new List<double[]>();

            do
            {
                train.Iteration();

                var validationError = Network.Model.CalculateError(ValidationSet);

                errors.Add(new[] { iteration, train.Error, validationError });

                Console.WriteLine(
                    @"Iteration #" + iteration++ +
                    @" Training error:" + String.Format("{0:N10}", train.Error) +
                    @", Validation error:" + String.Format("{0:N10}", validationError));

            } while ((iteration < Parameters.IterationsCount) && (train.Error > Parameters.AcceptedError));

            train.FinishTraining();

            ErrorSet = errors.ToArray();
        }
 public double[][] Train(int iterationsCount, double learningRate, double momentum)
 {
     var train = new Backpropagation(network, trainingData, learningRate, momentum);
     train.BatchSize = 1;
     double[][] errors = new double[2][];
     errors[0] = new double[iterationsCount];
     errors[1] = new double[iterationsCount];
     for (int i = 0; i < iterationsCount; i++)
     {
         train.Iteration(1);
         errors[0][i] = train.Error;
         errors[1][i] = network.CalculateError(validationData);
     }
     train.FinishTraining();
     return errors;
 }