//Shuffles the Dataset (used to have random data samples) public static void Shuffle(List <MNISTReader.DigitImage> list) { Random rng = new Random(); int n = list.Count; while (n > 1) { n--; int k = rng.Next(n + 1); MNISTReader.DigitImage value = list[k]; list[k] = list[n]; list[n] = value; } }
//MNIST to vector converter public static Vector ConvertImageToVector(MNISTReader.DigitImage image) { Vector doublevector = new Vector(28 * 28); int count = 0; for (int i = 0; i < 28; i++) { for (int j = 0; j < 28; j++) { if (image.pixels[i][j] != 0) { doublevector.data[count] = image.pixels[i][j] / 256.0; } count++; } } return(doublevector); }
public static int Active(Image <Gray, byte> digitImage) { byte[][] imageData = new byte[digitImage.Width][]; for (var i = 0; i < digitImage.Width; i++) { imageData[i] = new byte[digitImage.Height]; for (var j = 0; j < digitImage.Height; j++) { imageData[i][j] = digitImage.Data[j, i, 0]; } } var image = new MNISTReader.DigitImage(imageData, (byte)0); Vector doublevector = ConvertImageToVector(image); brain.SetInitialActivation(doublevector); brain.FeedForward(); return(brain.GetResult()); }