Exemplo n.º 1
0
        public void PerformFinalTest(List <List <Face> > faces)
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();
            var date = DateTime.Now.ToString("yyyy-dd-M-HH-mm-ss");
            var networkLearningInput  = NetworkHelper.CreateNetworkInputDataSet(faces, 12, 5, DataSetType.Learning, 12);
            var networkLearningOutput = NetworkHelper.CreateNetworkOutputDataSet(faces, 12, 5, DataSetType.Learning, 15);

            var networkValidationInput  = NetworkHelper.CreateNetworkInputDataSet(faces, 12, 5, DataSetType.Validation, 12);
            var networkValidationOutput = NetworkHelper.CreateNetworkOutputDataSet(faces, 12, 5, DataSetType.Validation, 15);

            var networkTestingInput  = NetworkHelper.CreateNetworkInputDataSet(faces, 12, 5, DataSetType.Testing, 12);
            var networkTestingOutput = NetworkHelper.CreateNetworkOutputDataSet(faces, 12, 5, DataSetType.Testing, 15);

            var learningSet   = NetworkHelper.NormaliseDataSet(networkLearningInput, networkLearningOutput);
            var validationSet = NetworkHelper.NormaliseDataSet(networkValidationInput, networkValidationOutput);
            var testingSet    = NetworkHelper.NormaliseDataSet(networkTestingInput, networkTestingOutput);

            foreach (double learningRate in new double[] { 0.001, 0.003 })
            {
                Parallel.ForEach(seeds, (x) =>
                {
                    var inputDataCopy = new InputClass(learningRate, id.Momentum, id.HiddenLayers, id.HiddenNeurons, id.Bias, id.PeopleCount, id.ActivationFunction, id.IterationsCount);
                    NetworkHelper.LearnNetwork(learningSet, testingSet, faces[0][0].features.Count, 15, inputDataCopy, validationSet, x);
                    Task.Factory.StartNew(() =>
                                          XmlFileWriter.WriteDataToFile("FinalTest" + date + ".xml", inputDataCopy.LearningError, inputDataCopy.ValidationError, inputDataCopy.TestingError, inputDataCopy.ElapsedTime, inputDataCopy.IterationsCount,
                                                                        inputDataCopy.LearningFactor, inputDataCopy.Momentum, inputDataCopy.HiddenLayers, inputDataCopy.HiddenNeurons, inputDataCopy.Bias, stopwatch.Elapsed, null, x)
                                          );
                });
            }
        }
        public void StartGridSearch(List <List <Face> > faces)
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();
            var date = DateTime.Now.ToString("yyyy-dd-M-HH-mm-ss");
            var networkLearningInput  = NetworkHelper.CreateNetworkInputDataSet(faces, 12, 5, DataSetType.Learning, 12);
            var networkLearningOutput = NetworkHelper.CreateNetworkOutputDataSet(faces, 12, 5, DataSetType.Learning, 15);

            var networkValidationInput  = NetworkHelper.CreateNetworkInputDataSet(faces, 12, 5, DataSetType.Validation, 12);
            var networkValidationOutput = NetworkHelper.CreateNetworkOutputDataSet(faces, 12, 5, DataSetType.Validation, 15);

            var networkTestingInput  = NetworkHelper.CreateNetworkInputDataSet(faces, 12, 5, DataSetType.Testing, 12);
            var networkTestingOutput = NetworkHelper.CreateNetworkOutputDataSet(faces, 12, 5, DataSetType.Testing, 15);

            var learningSet   = NetworkHelper.NormaliseDataSet(networkLearningInput, networkLearningOutput);
            var validationSet = NetworkHelper.NormaliseDataSet(networkValidationInput, networkValidationOutput);
            var testingSet    = NetworkHelper.NormaliseDataSet(networkTestingInput, networkTestingOutput);

            Parallel.ForEach(_momentum, (x) => MainCalculationLoop(_learningRate, x, _hiddenLayersCount, _bias, _neuronsCount, learningSet, validationSet, testingSet, faces, date, stopwatch.Elapsed));
            stopwatch.Stop();
        }
Exemplo n.º 3
0
        public void PerformCalculation(InputClass inputData, List <List <Face> > faces, string calcStartDate, TimeSpan timeFromStart, bool[] activeFeatures = null)
        {
            Console.WriteLine("Szykuje dane zbioru uczacego");
            var networkLearningInput  = NetworkHelper.CreateNetworkInputDataSet(faces, 12, 5, DataSetType.Learning, 12, activeFeatures);
            var networkLearningOutput = NetworkHelper.CreateNetworkOutputDataSet(faces, 12, 5, DataSetType.Learning, 15);

            var networkValidationInput  = NetworkHelper.CreateNetworkInputDataSet(faces, 12, 5, DataSetType.Validation, 12, activeFeatures);
            var networkValidationOutput = NetworkHelper.CreateNetworkOutputDataSet(faces, 12, 5, DataSetType.Validation, 15);

            var networkTestingInput  = NetworkHelper.CreateNetworkInputDataSet(faces, 12, 5, DataSetType.Testing, 12, activeFeatures);
            var networkTestingOutput = NetworkHelper.CreateNetworkOutputDataSet(faces, 12, 5, DataSetType.Testing, 15);

            var learningSet   = NetworkHelper.NormaliseDataSet(networkLearningInput, networkLearningOutput);
            var validationSet = NetworkHelper.NormaliseDataSet(networkValidationInput, networkValidationOutput);
            var testingSet    = NetworkHelper.NormaliseDataSet(networkTestingInput, networkTestingOutput);

            NetworkHelper.LearnNetwork(learningSet, testingSet, faces[0][0].features.Count, this.PeopleCount, inputData, validationSet);
            Task.Factory.StartNew(() =>
                                  XmlFileWriter.WriteDataToFile("Genetic" + calcStartDate + ".xml", inputData.LearningError, inputData.ValidationError, inputData.TestingError, inputData.ElapsedTime, inputData.IterationsCount,
                                                                inputData.LearningFactor, inputData.Momentum, inputData.HiddenLayers, inputData.HiddenNeurons, inputData.Bias, timeFromStart, activeFeatures)
                                  );
        }