// ==== UI methods private void button1_Click(object sender, EventArgs e) // Load data { this.pixelFile = textBox1.Text; this.labelFile = textBox2.Text; this.trainImages = MnistDataLoader.LoadData(pixelFile, labelFile); listBox1.Items.Add("MNIST images loaded into memory"); }
public void LoadData(Action <int> progressUpdater) { if (File.Exists(jsonFilePath)) { var deserialized = JsonConvert.DeserializeObject <NeuralNetwork>(File.ReadAllText(jsonFilePath)); network = deserialized; progressUpdater.Invoke(100); return; } network = new NeuralNetwork(inputLength, 100, 10, 0.3); var database = MnistDataLoader.LoadData(pixelFile, labelFile); var toDoubles = database.Select(i => i.pixels.SelectMany(s => s) .Select( byt => DigitImage.ConvertGrayScaleByteToDouble(byt))).ToArray(); //Test2(toDoubles, database); var targets = database.Select(i => Convert.ToInt32(i.label)).ToArray(); var percent = 0; for (var index = 0; index < toDoubles.Length; index++) { var doubleArray = toDoubles[index]; var correctAnswer = targets[index]; var target = Enumerable.Range(0, 10).Select(x => 0.01).ToArray(); target[correctAnswer] = 0.99; percent = NotifyDataLoadingProgress(index, toDoubles.Length, percent, progressUpdater); network.Train(doubleArray.ToArray(), target); } var networkJson = JsonConvert.SerializeObject(network); File.WriteAllText(jsonFilePath, networkJson); }