// 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."); } }
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"); }
// 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); }