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); }
// 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 })); }
//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; } } } } }