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(); }
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; }