public static void PrepareData(ref NetworkContainer container, ref CountNetworkTrainSettings settings) { if (settings.trainSettings.dataset != null) { throw new IncorrectActionOrderException("This action has already been completed."); } TestForErrors(ref settings); settings.trainSettings = new EncogTrainSettings { maxTrainingError = 0.01 }; int correctFileCount = BaseTrainHelper.GetFileCount(settings.correctInputDirectory); int incorrectFileCount = BaseTrainHelper.GetFileCount(settings.incorrectInputDirectory); if (correctFileCount <= 0) { throw new FileNotFoundException("correctFiles not found."); } if (incorrectFileCount <= 0) { throw new FileNotFoundException("incorretFiles not found."); } settings.trainSettings.dataset = new double[correctFileCount + incorrectFileCount][]; settings.trainSettings.answers = new double[correctFileCount + incorrectFileCount][]; // Compute correct training data. ComputeData( settings.sampleCount, settings.correctInputDirectory, ref settings.trainSettings.dataset, ref settings.trainSettings.answers, 1.0, 0); // Compute incorrect training data. ComputeData( settings.sampleCount, settings.incorrectInputDirectory, ref settings.trainSettings.dataset, ref settings.trainSettings.answers, 0.0, correctFileCount); }
// Convert data from a CSV file to the actual input array for the network. private static void ComputeData( uint sampleCount, string inputDataDirectory, ref double[][] outputData, ref double[][] outputAnswers, double outputValue, int index) { DirectoryInfo inputDirectory = new DirectoryInfo(inputDataDirectory); foreach (var file in inputDirectory.GetFiles("*.csv")) { List <ICSVFilter> baseFilters = new List <ICSVFilter>(1); ICSVFilter quaternions = new CSVEvenColumnFilter(); baseFilters.Add(quaternions); // Setup loader. CSVLoaderSettings settings = new CSVLoaderSettings { filePath = file.FullName, trimUp = 1, trimDown = 0, filters = baseFilters }; var data = CSVLoader <Vector3> .LoadData(ref settings); // Initialize image Transformer. ImageTransformerSettings imageSettings = new ImageTransformerSettings { focusJoints = (LeapMotionJoint[])Enum.GetValues(typeof(LeapMotionJoint)), samples = data, size = sampleCount }; ImageTransformer imageTransformer = new ImageTransformer(); BaseTrainHelper.Project1DInto2D( imageTransformer.GetNeuralInput(imageSettings), ref outputData, index); // Set answer to given value. outputAnswers[index] = new double[] { outputValue }; index++; } }
private static void ComputeData( uint networkInputSize, string inputDataDirectory, ref double[][] outputData, ref double[][] outputAnswers, double outputValue, int index) { DirectoryInfo inputDirectory = new DirectoryInfo(inputDataDirectory); foreach (var file in inputDirectory.GetFiles("*.csv")) { List <ICSVFilter> baseFilters = new List <ICSVFilter>(1); ICSVFilter quaternions = new CSVEvenColumnFilter(); baseFilters.Add(quaternions); // Setup loader. CSVLoaderSettings settings = new CSVLoaderSettings { filePath = file.FullName, trimUp = 1, trimDown = 0, filters = baseFilters }; var data = CSVLoader <Vector3> .LoadData(ref settings); // Initialize CountBased Transformer settings. IntervalBasedTransformerSettings countSettings = new IntervalBasedTransformerSettings { sampleList = data, count = networkInputSize }; CountBasedTransformer countTransformer = new CountBasedTransformer(); BaseTrainHelper.Project1DInto2D( countTransformer.GetNeuralInput(countSettings), ref outputData, index); // Set answer to given value. outputAnswers[index] = new double[] { outputValue }; index++; } }