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);
        }