Beispiel #1
0
        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)");;
            }
        }