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