/// <summary> /// Выполнить обучение. /// </summary> private static void DoLearnWork() { Console.BackgroundColor = ConsoleColor.Green; Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine(ConsoleMessageConstants.LEARN_RESULT_MESSAGE); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Green; var pathToFiles = GetPathToFiles(); var pathToResources = PathHelper.GetResourcesPath(); if (string.IsNullOrEmpty(pathToFiles)) { pathToFiles = pathToResources; } var images = Directory.GetFiles(pathToFiles).ToList(); var converter = new ImageConverterUtil(images); var listOfPicturesMatrix = converter.ConvertImagesToMatrix(); var iterationsCount = listOfPicturesMatrix.Count; var configuration = new Configuration { Alpha = 3.1, Epsilon = 3.1, EpochCount = 3, IdealResult = 1, IterationsInEpochCount = iterationsCount }; var layers = new List <Layer>(); var filterCore = FilterCoreModel.Initialize(); LayersInitialize(listOfPicturesMatrix, layers, filterCore, out Dictionary <string, double> inputLayerWeights, out List <NeuronModel> convolutionalLayerNeurons, out List <NeuronModel> hiddenLayerNeurons, out NeuronModel outputNeuron); var learningUtil = new LearningUtil(layers, configuration, listOfPicturesMatrix); learningUtil.StartToLearn(); }
/// <summary> /// Выполнить. /// </summary> /// <param name="parameter">Параметр.</param> protected override void Execute(MainWindowVM parameter) { if (!parameter.Data.Any()) { MessageBox.Show("Отсутвуют данные для обучения!\n" + "Загрузите данные."); return; } var countOfLayerNeurons = int.Parse(parameter.CountOfHiddenLayerNeurons); //if (countOfLayerNeurons.Equals(0)) //{ // MessageBox.Show("Операция для 0 нейронов не реализована."); // return; //} var alphaString = string.Empty; var epsilonString = string.Empty; var epochCountString = parameter.EpochCount; if (parameter.Alpha.Contains(".")) { alphaString = parameter.Alpha.Replace(".", ","); } else { alphaString = parameter.Alpha; } if (!double.TryParse(alphaString, out var alpha)) { MessageBox.Show("Параметры имеют неверный формат!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (parameter.Epsilon.Contains(".")) { epsilonString = parameter.Epsilon.Replace(".", ","); } else { epsilonString = parameter.Epsilon; } if (!double.TryParse(epsilonString, out var epsilon)) { MessageBox.Show("Параметры имеют неверный формат!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (!int.TryParse(epochCountString, out var epochCount)) { MessageBox.Show("Параметры имеют неверный формат!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } var configuration = new ConfigurationModel() { Alpha = alpha, Epsilon = epsilon, EpochCount = epochCount }; var learningUtil = new LearningUtil(parameter.Data, countOfLayerNeurons, configuration); learningUtil.Start(); }