static async Task Main(string[] args) { var csvReader = new CsvReader(); var trainSets = await csvReader.Read(TrainFile); var testSets = await csvReader.Read(TestFile); var nn = new Network(784, 30, 10); var bp = new BackpropagationAlgorithm(nn); var error = 0.0; var count = 0; do { count++; var sw = Stopwatch.StartNew(); error = bp.Train(trainSets, testSets); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); Console.WriteLine($"Count: {count} - MSE: {error}."); } while (error > 0.005); Console.WriteLine(nn.Save()); Console.ReadLine(); }
private void trainNetwork() { bool trainComplete = false; int currentEpoch; double currentError; var watch = Stopwatch.StartNew(); do { trainComplete = backpropagationAlgorithm.Train(); if (refreshProgress) { Dispatcher.Invoke(() => { currentEpoch = backpropagationAlgorithm.GetCurrentEpoch(); currentError = backpropagationAlgorithm.GetCurrentError(); epochLabel.Content = currentEpoch.ToString(); errorLabel.Content = String.Format("{0:0.00000}", currentError); learningProgressBar.Value = (int)((ErrorThreshold / currentError * 100)); chart.Series["series"].Points.AddXY(currentEpoch, currentError); }); } }while (!trainComplete && !stopSignal); watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; Dispatcher.Invoke(() => { abortButton.IsEnabled = false; }); if (stopSignal) { backpropagationAlgorithm.Abort(); MessageBox.Show("Przerwano uczenie sieci (Czas: " + elapsedMs + " ms)"); } else { MessageBox.Show("Sieć została nauczona (Czas: " + elapsedMs + " ms)");; } }