/// <summary> /// Write an array. /// </summary> /// <param name="data">The data to write.</param> /// <param name="inputCount">How much of the data is input.</param> public void Write(double[] data, int inputCount) { if (_idealCount == 0) { var inputData = new BasicMLData(data); _dataset.Add(inputData); } else { var inputData = new BasicMLData( _inputCount); var idealData = new BasicMLData( _idealCount); int index = 0; for (int i = 0; i < _inputCount; i++) { inputData[i] = data[index++]; } for (int i = 0; i < _idealCount; i++) { idealData[i] = data[index++]; } _dataset.Add(inputData, idealData); } }
/// <summary> /// Generate random training into a training set. /// </summary> /// <param name="training">The training set to generate into.</param> /// <param name="seed">The seed to use.</param> /// <param name="count">How much data to generate.</param> /// <param name="min">The low random value.</param> /// <param name="max">The high random value.</param> public static void Generate(IMLDataSetAddable training, long seed, int count, double min, double max) { var rand = new LinearCongruentialGenerator(seed); int inputCount = training.InputSize; int idealCount = training.IdealSize; for (int i = 0; i < count; i++) { var inputData = new BasicMLData(inputCount); for (int j = 0; j < inputCount; j++) { inputData[j] = rand.Range(min, max); } var idealData = new BasicMLData(idealCount); for (int j = 0; j < idealCount; j++) { idealData[j] = rand.Range(min, max); } var pair = new BasicMLDataPair(inputData, idealData); training.Add(pair); } }
/// <summary> /// Copy whatever dataset type is specified into a memory dataset. /// </summary> /// <param name="set">The dataset to copy.</param> public BasicMLSequenceSet(IMLDataSet set) { _currentSequence = new BasicMLDataSet(); _sequences.Add(_currentSequence); int inputCount = set.InputSize; int idealCount = set.IdealSize; foreach (IMLDataPair pair in set) { BasicMLData input = null; BasicMLData ideal = null; if (inputCount > 0) { input = new BasicMLData(inputCount); pair.Input.CopyTo(input.Data, 0, pair.Input.Count); } if (idealCount > 0) { ideal = new BasicMLData(idealCount); pair.Ideal.CopyTo(ideal.Data, 0, pair.Ideal.Count); } _currentSequence.Add(new BasicMLDataPair(input, ideal)); } }