private void ReadWeights() { _handwrittenDigitRecogNn = new HandwrittenDigitRecognitionNn(new List <TrainingSample>(), NnInputs, NnHidden, NnOutputs, 0.002); var weightsFile = new StreamReader("weights.txt"); var currentLayer = _handwrittenDigitRecogNn.HiddenLayer; var weights = new List <double>(); var j = 0; while (!weightsFile.EndOfStream) { var currentLine = weightsFile.ReadLine(); // End of weights for current unit. if (currentLine == "*") { currentLayer.Units[j].Weights = new List <double>(weights); j++; weights.Clear(); continue; } // End of layer. if (currentLine == "-") { currentLayer = _handwrittenDigitRecogNn.OutPutLayer; j = 0; weights.Clear(); continue; } weights.Add(double.Parse(currentLine)); } weightsFile.Close(); }
private void TrainBtnClick(object sender, EventArgs e) { var trainingDataSet = new List <TrainingSample>(); var trainingDataSetFiles = Directory.GetFiles(Directory.GetCurrentDirectory() + "\\Digits"); foreach (var file in trainingDataSetFiles) { var name = file.Remove(file.LastIndexOf(".")).Substring(file.LastIndexOf("\\") + 1); var @class = int.Parse(name.Substring(0, 1)); var classVec = new[] { 0.0, 0.0, 0.0 }; classVec[@class - 1] = 1; var imgMatrix = GetImage(new Bitmap(file)); var imgVector = imgMatrix.Cast <double>().Select(c => c).ToArray(); trainingDataSet.Add(new TrainingSample(imgVector, @class, classVec)); } _handwrittenDigitRecogNn = new HandwrittenDigitRecognitionNn(trainingDataSet, NnInputs, NnHidden, NnOutputs, 0.002); _handwrittenDigitRecogNn.Training(); var fileWeights = new StreamWriter("weights.txt", false); foreach (var layer in _handwrittenDigitRecogNn.Layers) { foreach (var unit in layer.Units) { foreach (var w in unit.Weights) { fileWeights.WriteLine(w); } fileWeights.WriteLine("*"); } fileWeights.WriteLine("-"); } fileWeights.Close(); MessageBox.Show("Training Complete!", "Message"); }