private Data ReadMnistData(string pathToLabels, string pathToImages)
        {
            var trainingImageLabels = FileReaderMNIST.LoadImagesAndLables(pathToLabels, pathToImages).ToList();
            var trainingSampleSize  = trainingImageLabels.Count;
            var firstTestCase       = trainingImageLabels.First().AsDouble();
            var lineNb          = firstTestCase.GetLength(0);
            var colNb           = firstTestCase.GetLength(1);
            var trainingInputs  = new double[lineNb * colNb, trainingSampleSize];
            var trainingOutputs = new double[1, trainingSampleSize];

            for (int tstNb = 0; tstNb < trainingSampleSize; tstNb++)
            {
                var currentSample = trainingImageLabels[tstNb];
                for (int i = 0; i < lineNb; i++)
                {
                    for (int j = 0; j < colNb; j++)
                    {
                        trainingInputs[i * lineNb + j, tstNb] = currentSample.Image[i, j];
                    }
                }
                trainingOutputs[0, tstNb] = trainingImageLabels[tstNb].Label;
            }
            var trainingData = new Data(trainingInputs, trainingOutputs);

            return(trainingData);
        }
        public MnistDataSource(string imagesGzPath, string labelsGzPath)
        {
            var mnistData = FileReaderMNIST.LoadImagesAndLables(labelsGzPath, imagesGzPath);

            _dataPoints = mnistData.Select(testCase =>
                                           new DataPoint {
                Value = ConvertImage(testCase.Image), Label = ConvertLabel(testCase.Label)
            }).ToList();
        }
예제 #3
0
파일: Form1.cs 프로젝트: Balazzzska/Neural1
        private void Form1_Load(object sender, EventArgs e)
        {
            var data = FileReaderMNIST.LoadImagesAndLables(
                "train-labels-idx1-ubyte.gz",
                "train-images-idx3-ubyte.gz");

            traindata = data;

            var data2 = FileReaderMNIST.LoadImagesAndLables(
                "t10k-labels-idx1-ubyte.gz",
                "t10k-images-idx3-ubyte.gz");

            testdata = data2;
        }
예제 #4
0
        static void Main(string[] args)
        {
            var data = FileReaderMNIST.LoadImagesAndLables(
                "./data/train-labels-idx1-ubyte.gz",
                "./data/train-images-idx3-ubyte.gz");
            var training = data.Take(50000);

            var test = FileReaderMNIST.LoadImagesAndLables(
                "./data/t10k-labels-idx1-ubyte.gz",
                "./data/t10k-images-idx3-ubyte.gz");

            //  var network = new Network(new[] { 784, 30, 10 });
            //  network.GradientDescent(training, 30, 10, 3.0, test);

            Console.WriteLine("Creating a " + 784 + "-" + 30 + "-" + 10 + " neural network");
            var network = new NeuralNetwork(new[] { 784, 100, 10 });

            var trainingData = ConvertData(training);
            var testData     = ConvertData(test);

            network.GradientDescent(trainingData, 30, 10, 3.0, testData);
        }
    // http://yann.lecun.com/exdb/mnist/
    public static IEnumerable <(double[] image, int label)> GetMNISTHandwrittenNumbers(string labelFileName, string imageFileName)
    {
        var dataDirectory = $"{TrainingDataDir}/{MNISTHandwrittenNumbersDir}";

        EnsureMNISTHandwrittenNumbersDataExists(dataDirectory);

        var trainingDataSet = FileReaderMNIST.LoadImagesAndLables($"{dataDirectory}/{labelFileName}", $"{dataDirectory}/{imageFileName}");

        foreach (var trainingData in trainingDataSet)
        {
            var trainingDataAsDoubleArray = new double[784];
            var trainingDataAsDouble      = trainingData.AsDouble();
            for (var i = 0; i < 28; i++)
            {
                for (var j = 0; j < 28; j++)
                {
                    trainingDataAsDoubleArray[j + (28 * i)] = trainingDataAsDouble[i, j];
                }
            }
            yield return(trainingDataAsDoubleArray, trainingData.Label);
        }
    }
예제 #6
0
 public MNISTmanager(string LPath, string IPath)
 {
     ClusterImageIndex = 0;
     ClusterLabelIndex = 0;
     data = Shuffle(FileReaderMNIST.LoadImagesAndLables(LPath, IPath).ToList());
 }
예제 #7
0
        public IEnumerator <TestCase> LoadFiles(string labelsZipFile, string imagesZipFile)
        {
            var imagesAndLabels = FileReaderMNIST.LoadImagesAndLables(labelsZipFile, imagesZipFile);

            return(imagesAndLabels.GetEnumerator());
        }