コード例 #1
0
        private void deserializeNetwork_Click(object sender, EventArgs e)
        {
            switch (KlasyfikatorComboBox.SelectedIndex)
            {
            case 1:
                ENNetwork = EncogNeuralNetwork.DeSerialize();
                break;

            case 3:
                ENNetworkQ = EncogNeuralNetworkQuick.DeSerialize(OpenGlController.divisionCountX, OpenGlController.divisionCountY);
                break;

            case 4:
                ENNetworkS = EncogNeuralNetworkSlow.DeSerialize();
                break;
            }
        }
コード例 #2
0
        public string Teach(AlgorithmDataModel teachingData)
        {
            DataSet dataSet;
            var     files     = teachingData.Files.Select(i => teachingData.Directory + i).ToArray();
            var     forgeries = teachingData.Forgeries?.Select(i => teachingData.ForgeriesDirectory + i).ToArray();

            switch (teachingData.FeatureAlgorithmName)
            {
            case "RadonTransformFeatureExtractor":
                _extractor = new RadonTransformFeatureExtractor(int.Parse(teachingData.FeatureAlgorithmParameters[0]));
                dataSet    = _extractor.GetTeachingDataset(files, forgeries);
                break;

            default:
                throw new ArgumentException("FeatureAlgorithmName");
            }

            switch (teachingData.ComputingAlgorithmName)
            {
            case "NeuralNetworkBp":
                _engine = new NeuralNetworkBp(double.Parse(teachingData.ComputingAlgorithmParameters[0].Replace(".", ",")),
                                              double.Parse(teachingData.ComputingAlgorithmParameters[1].Replace(".", ",")));
                _engine.Train(dataSet);
                break;

            case "EncogNeuralNetwork":
                _engine = new EncogNeuralNetwork(double.Parse(teachingData.ComputingAlgorithmParameters[0].Replace(".", ",")),
                                                 double.Parse(teachingData.ComputingAlgorithmParameters[1].Replace(".", ",")));
                _engine.Train(dataSet);
                break;

            default:
                throw new ArgumentException("ComputingAlgorithmName");
            }

            return("OK");
        }
コード例 #3
0
        private async void TrainButtonClick(object sender, EventArgs e)
        {
            if (Controller.File == null)
            {
                BrakPlikuMessageBox();
                return;
            }

            switch (KlasyfikatorComboBox.SelectedIndex)
            {
            //2plik = 0.056 4plik = 0.066 [300k points]
            case 0:
                DisableChangeButtons();
                await Task.Run(() =>
                {
                    KNNClassifier = new KnnAccordClassifier(3);
                    if (!KNNClassifier.CanClassify)
                    {
                        var pointsToTrain     = Utills.GenerateClassArray(Controller.File.LasPointDataRecords, 0.066);
                        var inputOutputArrays = KnnAccordClassifier.MakeInputOutputs(pointsToTrain, Controller.File);
                        KNNClassifier.Teach(inputOutputArrays.Item1, inputOutputArrays.Item2);
                    }
                });

                EnableChangeButtons();
                break;

            case 1:
                DisableChangeButtons();
                await Task.Run(() =>
                {
                    ENNetwork = new EncogNeuralNetwork(Controller.File);
                });

                EnableChangeButtons();
                break;

            case 2:
                DisableChangeButtons();
                await Task.Run(() =>
                {
                    KNNClassifierQuick = new KnnAccordClassifierQuick(3);
                    if (!KNNClassifierQuick.CanClassify)
                    {
                        var inputOutputArrays =
                            KnnAccordClassifierQuick.MakeInputOutputs(Utills.GroupPointsList(
                                                                          Controller.File, OpenGlController.divisionCountX, OpenGlController.divisionCountY));
                        KNNClassifierQuick.TeachGroups(inputOutputArrays.Item1, inputOutputArrays.Item2);
                    }
                });

                EnableChangeButtons();
                break;

            case 3:
                DisableChangeButtons();
                await Task.Run(() =>
                {
                    ENNetworkQ = new EncogNeuralNetworkQuick(Controller.File, OpenGlController.divisionCountX, OpenGlController.divisionCountY);
                });

                EnableChangeButtons();
                break;

            case 4:
                DisableChangeButtons();
                await Task.Run(() =>
                {
                    KNNClassifierSlow = new KnnAccordClassifierSlow(3);
                    if (!KNNClassifierSlow.CanClassify)
                    {
                        var pointsToTrain     = Utills.GenerateClassArray(Controller.File.LasPointDataRecords, 0.10);
                        var inputOutputArrays = KnnAccordClassifierSlow.MakeInputOutputs(pointsToTrain, Controller.File);
                        KNNClassifierSlow.Teach(inputOutputArrays.Item1, inputOutputArrays.Item2);
                    }
                });

                EnableChangeButtons();
                break;

            case 5:
                DisableChangeButtons();
                await Task.Run(() =>
                {
                    ENNetworkS = new EncogNeuralNetworkSlow(Controller.File);
                });

                EnableChangeButtons();
                break;
            }
            KoniecTreninguMessageBox();
        }