Exemplo n.º 1
0
        // Predict the output of a dataset using an existing network.
        public static bool Predict(ref NetworkContainer container, ref CountNetworkPredictSettings settings)
        {
            if (settings.predictSettings.data == null)
            {
                throw new IncorrectActionOrderException("Prepare predictor before predicting.");
            }

            return(EncogWrapper.Predict(ref container, ref settings.predictSettings));
        }
        // Prepare input data for prediction.
        public static void PreparePredictor(ref NetworkContainer container, ref ImageNetworkPredictSettings settings)
        {
            TestForErrors(ref settings);

            EncogWrapper.LoadNetworkFromFS(ref container, settings.trainedNetwork);

            List <ICSVFilter> baseFilters = new List <ICSVFilter>(1);
            ICSVFilter        quaternions = new CSVEvenColumnFilter();

            baseFilters.Add(quaternions);

            // Setup loader.
            CSVLoaderSettings CSVSettings = new CSVLoaderSettings
            {
                filePath = settings.predictData,
                trimUp   = 1,
                trimDown = 0,
                filters  = baseFilters
            };

            var data = CSVLoader <Vector3> .LoadData(ref CSVSettings);

            // Initialize image Transformer.
            ImageTransformerSettings imageSettings = new ImageTransformerSettings
            {
                focusJoints = (LeapMotionJoint[])Enum.GetValues(typeof(LeapMotionJoint)),
                samples     = data,
                size        = settings.imgSize
            };
            ImageTransformer imageTransformer = new ImageTransformer();


            if (settings.predictSettings.threshold.Equals(null))
            {
                settings.predictSettings = new EncogPredictSettings
                {
                    threshold = 0.9
                };
            }

            settings.predictSettings.data = imageTransformer.GetNeuralInput(imageSettings);

            if (settings.predictSettings.data.Length != container.network.InputCount)
            {
                throw new NoNetworkMatchException("Sample count doesn't match network input count.");
            }
        }
Exemplo n.º 3
0
        public static void PreparePredictor(ref NetworkContainer container, ref CountNetworkPredictSettings settings)
        {
            TestForErrors(ref settings);

            EncogWrapper.LoadNetworkFromFS(ref container, settings.trainedNetwork);

            List <ICSVFilter> baseFilters = new List <ICSVFilter>(1);
            ICSVFilter        quaternions = new CSVEvenColumnFilter();

            baseFilters.Add(quaternions);

            // Setup loader.
            CSVLoaderSettings CSVSettings = new CSVLoaderSettings
            {
                filePath = settings.predictData,
                trimUp   = 1,
                trimDown = 0,
                filters  = baseFilters
            };

            var data = CSVLoader <Vector3> .LoadData(ref CSVSettings);

            // Initialize CountBased Transformer settings.
            IntervalBasedTransformerSettings countSettings = new IntervalBasedTransformerSettings
            {
                sampleList = data,
                count      = settings.sampleCount
            };
            CountBasedTransformer countTransformer = new CountBasedTransformer();

            if (settings.predictSettings.threshold.Equals(null))
            {
                settings.predictSettings = new EncogPredictSettings
                {
                    threshold = 0.9
                };
            }

            settings.predictSettings.data = countTransformer.GetNeuralInput(countSettings);

            if (settings.predictSettings.data.Length != container.network.InputCount)
            {
                throw new NoNetworkMatchException("Sample count doesn't match network input count.");
            }
        }
        public static void Train(ref NetworkContainer container, ref CountNetworkTrainSettings settings)
        {
            if (settings.trainSettings.dataset == null)
            {
                throw new IncorrectActionOrderException("Prepare data before training network.");
            }

            if (container == null)
            {
                throw new IncorrectActionOrderException("Prepare network before training network.");
            }

            EncogWrapper.Train(ref container, ref settings.trainSettings);
            if (settings.outputDirectory[settings.outputDirectory.Length - 1].Equals("/"))
            {
                EncogWrapper.SaveNetworkToFS(ref container, settings.outputDirectory + settings.outputName + ".eg");
                return;
            }

            EncogWrapper.SaveNetworkToFS(ref container, settings.outputDirectory + "/" + settings.outputName + ".eg");
        }
Exemplo n.º 5
0
        // Prepare network for training, this is mainly setting up the layers and activation functions.
        public static void PrepareNetwork(ref NetworkContainer container, ref ImageNetworkTrainSettings settings)
        {
            if (settings.trainSettings.dataset == null)
            {
                throw new IncorrectActionOrderException("Prepare data before preparing network.");
            }

            EncogWrapper.Instantiate(ref container);

            EncogLayerSettings inputLayerSettings = new EncogLayerSettings
            {
                activationFunction = null,
                hasBias            = true,
                neuronCount        = settings.trainSettings.dataset[0].Length
            };

            EncogWrapper.AddLayer(ref container, ref inputLayerSettings);

            EncogLayerSettings hiddenLayerOneSettings = new EncogLayerSettings
            {
                activationFunction = new ActivationElliott(),
                hasBias            = true,
                neuronCount        = 100
            };

            EncogWrapper.AddLayer(ref container, ref hiddenLayerOneSettings);

            EncogLayerSettings outputLayerSettings = new EncogLayerSettings
            {
                activationFunction = new ActivationElliott(),
                hasBias            = false,
                neuronCount        = 1
            };

            EncogWrapper.AddLayer(ref container, ref outputLayerSettings);
            EncogWrapper.FinalizeNetwork(ref container);
        }