예제 #1
0
        public frmMain()
        {
            TrainerManager   tm     = new TrainerManager();
            DigitImageLoader loader = new DigitImageLoader();


            data    = loader.Load().OrderBy(x => rand.Next(int.MaxValue)).Take(500).ToList();
            network = tm.GetTrainer(LearningSubject.Image, LearningObject.Network).Get <ICalculatableImageNetwork>();

            InitializeComponent();
            //imageList.Images.Add(Image.Fro)
            CustomDigitImageProcessor d =
                new CustomDigitImageProcessor(@"C:\Users\ostorc\Desktop\testData_whiteBlack.png", 2);
            var img = d.Load();

            SetMainText(img);


            /*
             * double succesRate = 0;
             * foreach (var pair in data)
             * {
             *  var di = pair;
             *  var data = network.GetNumber(pair);
             *  if (di.Label == data) succesRate += 1.0 / this.data.Count;
             * }*/
        }
예제 #2
0
        /// <summary>
        /// Load test data
        /// </summary>
        /// <returns>Load test data</returns>
        public override List <KeyValuePair <double[], double[]> > GetTestData()
        {
            List <KeyValuePair <double[], double[]> > result = new List <KeyValuePair <double[], double[]> >();
            DigitImageLoader loader = new DigitImageLoader();
            var data = loader.Load();

            foreach (DigitImage image in data)
            {
                var output = new double[NumberOfOutputs];
                output[image.Label] = 1;
                result.Add(new KeyValuePair <double[], double[]>(image.ToDoubleArray(), output));
            }
            return(result);
        }
예제 #3
0
        /// <summary>
        /// Constructor for Image Network Trainer
        /// </summary>
        /// <param name="network">Network which should learn</param>
        /// <param name="useCache">Shall be used cache if exists?</param>
        public ImageNetworkTrainer(ILearnableNetwork network, bool useCache) : base(network, useCache)
        {
            DigitImageLoader loader = new DigitImageLoader(DigitImageLoader.DefaultImagesPathTest,
                                                           DigitImageLoader.DefaultLabelsPathTest);
            var data = loader.Load();

            Inputs = new double[data.Count][];
            for (int i = 0; i < data.Count; i++)
            {
                Inputs[i] = data[i].ToDoubleArray();
            }
            Results = new double[data.Count][];
            for (int i = 0; i < data.Count; i++)
            {
                Results[i] = new double[NumberOfOutputs];
                Results[i][data[i].Label] = 1;
            }
        }
예제 #4
0
        private async void frmMain_Shown(object sender, EventArgs e)
        {
            Tuple <ImageList, ListView> list =
                await Task.Run(() =>
            {
                ImageList imgList = new ImageList();
                ListView itmList  = new ListView();
                foreach (DigitImage image in data)
                {
                    var guid = Guid.NewGuid().ToString();
                    imgList.Images.Add(guid, image.NumberImage);
                    itmList.Items.Add(image.Label.ToString(), imgList.Images.IndexOfKey(guid));
                    itmList.Items[itmList.Items.Count - 1].Tag = image;
                }
                return(new Tuple <ImageList, ListView>(imgList, itmList));
            });

            imageList = list.Item1;
            foreach (ListViewItem itm in list.Item2.Items)
            {
                itm.Remove();
                lvImages.Items.Add(itm);
            }
            //lvImages = list.Item2;
            lvImages.LargeImageList = imageList;
            lvImages.SmallImageList = imageList;
            lvImages.Refresh();

            lblTestSuccess.Text = await Task.Run(() =>
            {
                double succesRate = 0;
                foreach (var pair in data)
                {
                    var di = pair;
                    var d  = network.GetNumber(pair);
                    if (di.Label == d)
                    {
                        succesRate += 1.0 / this.data.Count;
                    }
                }
                return(succesRate.ToString("p2", CultureInfo.CurrentCulture));
            });


            lblLearningSuccess.Text = await Task.Run(() =>
            {
                var data = new DigitImageLoader(DigitImageLoader.DefaultImagesPathTest, DigitImageLoader.DefaultLabelsPathTest).Load();

                double succesRate = 0;
                foreach (var pair in data)
                {
                    var di = pair;
                    var d  = network.GetNumber(pair);
                    if (di.Label == d)
                    {
                        succesRate += 1.0 / data.Count;
                    }
                }
                return(succesRate.ToString("p2", CultureInfo.CurrentCulture));
            });
        }