Exemplo n.º 1
0
    public void MnistTest()
    {
        string TestImages       = "Assets/Resources//mnist/test/t10k-images.idx3-ubyte";
        string TestLabels       = "Assets/Resources//mnist/test/t10k-labels.idx1-ubyte";
        var    testingImageFile = new ImageFile(TestImages); // Testing Images
        var    testingLabelFile = new LabelFile(TestLabels); // Testing Labels

        int correctGuessCount = 0;

        for (int batchNum = 0; batchNum < 100; batchNum++)
        {
            int startPoint = batchNum;
            int endPoint   = startPoint + 1;

            testingImageFile.ReadNextBatch(startPoint, endPoint);
            testingLabelFile.ReadNextBatch(startPoint, endPoint);

            neuralNet.FeedForward(testingImageFile.images[0]);
            Debug.Log((int)ParseNetworkOutput(neuralNet.Outputs()));
            Debug.Log(String.Join(",", testingLabelFile.labels[0]));
            if (testingLabelFile.labels[0][(int)ParseNetworkOutput(neuralNet.Outputs())] > 0.0f)
            {
                correctGuessCount += 1;
            }
        }

        Debug.Log((correctGuessCount / TestImages.Length) * 100);
    }
Exemplo n.º 2
0
    // Note: Try convolutional NN?
    public void MnistTrain()
    {
        string TrainImages       = "Assets/Resources/mnist/train/train-images.idx3-ubyte";
        string TrainLabels       = "Assets/Resources/mnist/train/train-labels.idx1-ubyte";
        var    trainingImageFile = new ImageFile(TrainImages); // Training Images
        var    trainingLabelFile = new LabelFile(TrainLabels); // Training Labels

        int batchSize       = 8;
        int totalBatchCount = (int)Math.Ceiling((double)trainingLabelFile.numberOfLabels / (double)batchSize);

        Debug.Log("Number of Training Batches: " + totalBatchCount);

        List <float> errors = new List <float>();

        for (int batchNum = 0; batchNum < 100; batchNum++)
        {
            // Debug.Log("Doing batch: " + batchNum);
            int startPoint = batchNum * batchSize;
            int endPoint   = startPoint + batchSize - 1;


            if (endPoint >= trainingLabelFile.numberOfLabels)
            {
                endPoint = trainingLabelFile.numberOfLabels - 1;
            }
            trainingImageFile.ReadNextBatch(startPoint, endPoint);
            trainingLabelFile.ReadNextBatch(startPoint, endPoint);

            // Figure out how to slice arrays
            // Maybe we modify the file I/O to only take it the batchSize number of image/label combos?
            errors.Add(neuralNet.TrainUsingMiniBatch(trainingImageFile.images, trainingLabelFile.labels));
        }
        graph.ShowGraph(errors);
        // MnistTest();
    }
        public IHttpActionResult UploadLabelFiles([FromUri] int orderDetailId)
        {
            // 将label文件反序列化,添加新的label文件,再序列化
            var orderDetailInDb = _context.FBAOrderDetails.Find(orderDetailId);
            var deList          = DeserializeLabelFilesString(orderDetailInDb.LabelFiles);
            var list            = new List <LabelFile>();

            list.AddRange(deList);

            //从httpRequest中获取文件并写入磁盘系统
            var filesGetter  = new FilesGetter();
            var filePathList = filesGetter.GetAndSaveMultipleFileFromHttpRequest(@"D:\Labels\");

            if (filePathList.ToList().Count == 0)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            foreach (var f in filePathList)
            {
                var labelFile = new LabelFile();
                labelFile.NameInSystem = f.Split('\\').Last();
                labelFile.OriginalName = labelFile.NameInSystem.Split('-').Last();
                labelFile.RootPath     = f;
                labelFile.UploadDate   = DateTime.Now;

                list.Add(labelFile);
            }

            orderDetailInDb.LabelFiles = SerializeLabelFiles(list);

            _context.SaveChanges();
            return(Ok(new { OrderDetailId = orderDetailId, list.Count }));
        }
Exemplo n.º 4
0
            //We want to read every label file initially, so that each label file can be assigned to each file name that it lists, in the fileLookup dictionary.
            //Loading of labels for actual use can then be done by calls to GetLabels.
            public IniLabels()
            {
                fileLookup = new Dictionary <string, string>();
                string labelDirectory = Path.Combine(MainForm.executableDir, "param_labels\\");

                if (Directory.Exists(labelDirectory))
                {
                    string[] files = Directory.GetFiles(labelDirectory);
                    foreach (string filePath in files)
                    {
                        if (Path.GetExtension(filePath).ToLowerInvariant() == ".ini")
                        {
                            LabelFile lf = new LabelFile(filePath);
                            foreach (string name in lf.fileNames)
                            {
                                fileLookup[name] = filePath;
                            }
                        }
                    }
                }
            }