private void TrainNetwork()
        {
            network     = (BasicNetwork)EncogDirectoryPersistence.LoadObject(Config.TrainedNetworkFile);
            trainingSet = EncogUtility.LoadCSV2Memory(Config.NormalizedTrainingFile.ToString(),
                                                      network.InputCount, network.OutputCount, true, CSVFormat.English, false);
            crossValidationSet = EncogUtility.LoadCSV2Memory(Config.NormalizedCrossValidationFile.ToString(),
                                                             network.InputCount, network.OutputCount, true, CSVFormat.English, false);


            train = new ResilientPropagation(network, trainingSet);

            IterationDataCollection.Clear();
            CVIterationDataCollection.Clear();
            IterationLogs.Clear();
            trainWorker.RunWorkerAsync();
        }
        void trainWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            Action UpdateCollection = () =>
            {
                var IterationResults = (KeyValuePair <int, double>[])e.UserState;

                IterationDataCollection.Add(new IterationData()
                {
                    IterationError = IterationResults[0].Value, IterationNumber = IterationResults[0].Key
                });
                CVIterationDataCollection.Add(new IterationData()
                {
                    IterationError = IterationResults[1].Value, IterationNumber = IterationResults[1].Key
                });
                IterationLogs.Add(String.Format(IterationResults[0].Value + " Epoch-> " + IterationResults[0].Key));
            };

            App.Current.Dispatcher.Invoke(UpdateCollection, DispatcherPriority.Normal);
        }