Beispiel #1
0
        private void TrainOnOurData()
        {
            List <double[]> input  = new List <double[]>();
            List <double[]> output = new List <double[]>();

            foreach (var d in Directory.GetDirectories(path_to_sampe_dir))
            {
                int type = int.Parse(d.Last().ToString());
                foreach (var file in Directory.GetFiles(d))
                {
                    var img = AForge.Imaging.UnmanagedImage.FromManagedImage(new Bitmap(file));
                    input.Add(imgToData(img));
                    output.Add(new double[digit_count].Select((p, ind) => ind == type ? 1.0 : 0.0).ToArray());
                }
            }

            net.Randomize();
            double error      = double.PositiveInfinity;
            var    inp        = input.ToArray();
            var    otp        = output.ToArray();
            int    iterations = 0;

            while (error > max_error && iterations < epochs)
            {
                error = backprog.RunEpoch(inp, otp) / input.Count;
                iterations++;
            }
        }
Beispiel #2
0
        private void TrainOnOurData()
        {
            List <double[]> input  = new List <double[]>();
            List <double[]> output = new List <double[]>();

            /*foreach (var d in Directory.GetDirectories(path_to_sampe_dir))
             * {
             *  int clas = 0;
             *  string planet = d.Split('/').Last();
             *  switch (planet)
             *  {
             *      case "Меркурий": clas = 1; break;
             *      case "Венера": clas = 2; break;
             *      case "Земля": clas = 3; break;
             *      case "Марс": clas = 4; break;
             *      case "Юпитер": clas = 5; break;
             *      case "Сатурн": clas = 6; break;
             *      case "Уран": clas = 7; break;
             *      case "Нептун": clas = 8; break;
             *      case "Плутон": clas = 9; break;
             *  }*/
            foreach (var file in Directory.GetFiles("../../../heap/"))
            {
                string path = file.ToString();
                int    clas = path[path.Length - 5] - '0';
                //System.Diagnostics.Debug.WriteLine(path[path.Length - 5]);
                //System.IO.File.Move(path, path.Insert(path.Length - 4, clas.ToString()));
                var img = AForge.Imaging.UnmanagedImage.FromManagedImage(new Bitmap(file));
                input.Add(imgToData(img));
                output.Add(new double[classes_count].Select((p, ind) => ind == clas ? 1.0 : 0.0).ToArray());
            }

            //   }
            // return;
            if (net == Net.Accord)
            {
                accord.Randomize();
            }
            double error      = double.PositiveInfinity;
            var    inputArr   = input.ToArray();
            var    outputArr  = output.ToArray();
            int    iterations = 0;

            if (net == Net.Accord)
            {
                while (error > max_error && iterations < epochs)
                {
                    error = backprog.RunEpoch(inputArr, outputArr) / input.Count;
                    iterations++;
                }
            }
            else if (net == Net.Dimas)
            {
                while (error > max_error && iterations < epochs)
                {
                    error = dimas.RunEpoch(inputArr, outputArr) / input.Count;
                    iterations++;
                }
            }
        }