public void Parse() { foreach (string filePath in Directory.GetFiles(path)) { int digit = int.Parse(Path.GetFileName(filePath)[0].ToString()); Bitmap bitmap = new Bitmap(filePath); var digitImage = new DigitImage(); digitImage.Digit = digit; digitImage.Width = bitmap.Width; digitImage.Height = bitmap.Height; for (int y = 0; y < bitmap.Height; y++) { for (int x = 0; x < bitmap.Width; x++) { Color color = bitmap.GetPixel(x, y); digitImage.Pixels.Add(1 - color.GetBrightness()); } } DigitImages.Add(digitImage); } DigitImages.Shuffle(); originalCount = DigitImages.Count; }
public void GenerateDataSets(float validationData, float disturbanceProbability = 0.1f, float disturbanceMaxDifference = 1) { int testDataCount = ((int)(DigitImages.Count * validationData)).Clamp(0, DigitImages.Count - 1); var testImages = DigitImages.GetRange(0, testDataCount); var trainImages = DigitImages.GetRange(testDataCount, DigitImages.Count - testDataCount); TestData = testImages.ConvertAll(x => x.ConvertToTrainData()); if (disturbanceProbability > 0) { AddDisturbance(trainImages, disturbanceProbability, disturbanceMaxDifference); } TrainData = trainImages.ConvertAll(x => x.ConvertToTrainData()); }