Ejemplo n.º 1
0
        /// <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();
        }
Ejemplo n.º 2
0
        /// <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();
        }