Example #1
0
        public static void MyTrainConsole(IMLTrain train, BasicNetwork network, IMLDataSet trainingSet, int minutes, FileInfo networkFile, FileInfo trainFile)
        {
            int  epoch = 1;
            long remaining;

            Console.WriteLine(@"Beginning training...");
            long start = Environment.TickCount;

            do
            {
                train.Iteration();
                long current = Environment.TickCount;
                long elapsed = (current - start) / 1000;
                remaining = minutes - elapsed / 60;
                Console.WriteLine($@"Iteration #{Format.FormatInteger(epoch)} Error:{Format.FormatPercent(train.Error)} elapsed time = {Format.FormatTimeSpan((int)elapsed)} time left = {Format.FormatTimeSpan((int)remaining * 60)}");
                epoch++;
                EncogDirectoryPersistence.SaveObject(networkFile, network);
                TrainingContinuation cont = train.Pause();
                EncogDirectoryPersistence.SaveObject(trainFile, cont);
                train.Resume(cont);
                foreach (var x in cont.Contents)
                {
                    Console.WriteLine($"{x.Key}: {((double[])x.Value).Average()}");
                }
            }while (remaining > 0 && !train.TrainingDone && !Console.KeyAvailable);
            Console.WriteLine("Finishing.");
            train.FinishTraining();
        }