public override double TestOnDataSet(SamplesSet testSet) { for (int i = 0; i < testSet.Count; i++) { var sample = testSet.samples[i]; Calculate(ref sample); sample.processOutput(); } return(testSet.ErrorsCount()); }
public SamplesSet GenerateSet() { SamplesSet res = new SamplesSet(); for (int i = 0; i < Config.current.figures.Count; i++) { var sel = Config.current.figures[i]; int take = Math.Min(files[sel].Length, Config.current.training_size); //foreach(var el in files[sel].OrderBy(x => rand.Next()).Take(take)) Parallel.ForEach(files[sel].OrderBy(x => rand.Next()).Take(take), el => { res.AddSample(process_output(fillImage(new Bitmap(el)), i)); }); } res.samples = res.samples.OrderBy(x => rand.Next()).ToList(); return(res); }
public override double TrainOnDataSet(SamplesSet samplesSet, int epochs_count, double acceptable_erorr, bool parallel = true) { double error = 0; stopWatch.Restart(); for (int i = 0; i < epochs_count; i++) { error = 0; for (int j = 0; j < samplesSet.Count; j++) { var sample = samplesSet[j]; Calculate(ref sample, parallel); sample.processOutput(); error += sample.EstimatedError(); BackwardError(sample, parallel); } if (error < acceptable_erorr) { break; } } return(error); }
public abstract double TestOnDataSet(SamplesSet testSet);
public abstract double TrainOnDataSet(SamplesSet samplesSet, int epochs_count, double acceptable_erorr, bool parallel = true);