public void ReadTrainMNIST()
        {
            try
            {
                FileStream ifsLabels =
                    new FileStream(@"C:\Users\cleist\BA\MNIST\train-labels.idx1-ubyte", FileMode.Open); // train labels
                FileStream ifsImages =
                    new FileStream(@"C:\Users\cleist\BA\MNIST\train-images.idx3-ubyte", FileMode.Open); // train images

                BinaryReader brLabels = new BinaryReader(ifsLabels);
                BinaryReader brImages = new BinaryReader(ifsImages);

                int magic1    = BigEndianConverter.ReadBigInt32(brImages); // discard
                int numImages = BigEndianConverter.ReadBigInt32(brImages);
                int numRows   = BigEndianConverter.ReadBigInt32(brImages);
                int numCols   = BigEndianConverter.ReadBigInt32(brImages);

                int magic2    = BigEndianConverter.ReadBigInt32(brLabels);
                int numLabels = BigEndianConverter.ReadBigInt32(brLabels);

                byte[][] pixels = new byte[numRows][];
                for (int i = 0; i < pixels.Length; ++i)
                {
                    pixels[i] = new byte[numCols];
                }

                // each image
                for (int di = 0; di < 1000; ++di)
                {
                    for (int i = 0; i < numRows; ++i)
                    {
                        for (int j = 0; j < numCols; ++j)
                        {
                            byte b = brImages.ReadByte();
                            pixels[i][j] = b;
                        }
                    }

                    byte lbl = brLabels.ReadByte();

                    TrainingImgs.Add(new DigitImage(pixels, lbl, numRows, numCols));
                }

                ifsImages.Close();
                brImages.Close();
                ifsLabels.Close();
                brLabels.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
        }
        public void ShuffleTrainingImgs()
        {
            var rnd = new Random();

            TrainingImgs = TrainingImgs.OrderBy(x => rnd.Next()).ToList();
        }