private static void CheckNetworkAccuracy(Network network, List<string> classifications) { ChooseImageForCheck(); PrintNewLine(1); GetInput(); var imagePaths = GetImageNames(); while (imagePaths.Count <= 0) { InvalidNumberOfImages(); ChooseImageForCheck(); imagePaths = GetImageNames(); } foreach (var imagePath in imagePaths) { var imageMatrix = GetImageMatrix(imagePath); var results = network.Compute(imageMatrix); ShowSureness(results, imagePath, classifications); } Console.ReadLine(); }
private static void StartImageTraining() { var classifications = new List<string>(); for (var i = 0; i < NumClassifications; i++) { AskForClassificationName(i + 1); classifications.Add(GetInput()); } var dataSets = new List<DataSet>(); for (var i = 0; i < classifications.Count; i++) { RequestImageSelection(classifications[i]); var imagePaths = GetImageNames(); while (imagePaths.Count <= 0) { InvalidNumberOfImages(); RequestImageSelection(classifications[i]); imagePaths = GetImageNames(); } foreach (var imagePath in imagePaths) { var values = GetImageMatrix(imagePath); var targets = new double[classifications.Count]; targets[i] = 1; dataSets.Add(new DataSet(values, targets)); } } TrainingNetwork(); var network = new Network(MaxWidth * MaxHeight * 3, HiddenLayerSize, NumClassifications); network.Train(dataSets, TrainingType == TrainingType.Epoch ? MaxEpochs : MinimumError); CheckNetworkAccuracy(network, classifications); }