static void Main(string[] args) { INeuralDataSet trainingSet = new BasicNeuralDataSet(AndInput, AndIdeal); var network = new BasicNetwork(); network.AddLayer(new BasicLayer(new ActivationRamp(), true, 25)); network.AddLayer(new BasicLayer(new ActivationRamp(), true, 75)); network.AddLayer(new BasicLayer(new ActivationRamp(), true, 50)); network.AddLayer(new BasicLayer(new ActivationRamp(), true, 20)); network.Structure.FinalizeStructure(); network.Reset(); ITrain train = new Backpropagation(network, trainingSet, 0.02, 0.3); int epoch = 1; do { train.Iteration(); Console.WriteLine($"{train.Error}"); epoch++; } while ((epoch < MaxEpoch) && (train.Error > AcceptableError)); var input = new BasicMLData(new double[25] { 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1 }); int best = network.Winner(input); Console.WriteLine($"Rozpoznano: {_literki[best]}"); foreach (IMLDataPair pair in trainingSet) { IMLData output = network.Compute(pair.Input); Console.WriteLine($"wynik : { output[0].ToString("0.000")} {output[1].ToString("0.000")} {output[2].ToString("0.000")} {output[3].ToString("0.000")} {output[4].ToString("0.000")} {output[5].ToString("0.000")} {output[6].ToString("0.000")} {output[7].ToString("0.000")} {output[8].ToString("0.000")} {output[9].ToString("0.000")} {output[10].ToString("0.000")} {output[11].ToString("0.000")} {output[12].ToString("0.000")} {output[13].ToString("0.000")} {output[14].ToString("0.000")} {output[15].ToString("0.000")} {output[16].ToString("0.000")} {output[17].ToString("0.000")} {output[18].ToString("0.000")} {output[19].ToString("0.000")}"); } Console.ReadKey(); }
public void ProcessWhatIs() { String filename = GetArg("image"); try { var img = new Bitmap(filename); var input = new ImageMLData(img); input.Downsample(downsample, false, downsampleHeight, downsampleWidth, 1, -1); int winner = network.Winner(input); app.WriteLine("What is: " + filename + ", it seems to be: " + neuron2identity[winner]); } catch (Exception e) { app.WriteLine("Error loading: " + filename + ", " + e.Message); } }
private void RecCanvas_MouseUp(object sender, MouseButtonEventArgs e) { recCanvas_drawing = false; var size = new Size(RecCanvas.ActualWidth, RecCanvas.ActualHeight); // Measure and arrange the surface // VERY IMPORTANT RecCanvas.Measure(size); RecCanvas.Arrange(new Rect(size)); var renderBitmap = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96d, 96d, PixelFormats.Pbgra32); renderBitmap.Render(RecCanvas); MemoryStream stream = new MemoryStream(); BitmapEncoder encoder = new BmpBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(renderBitmap)); encoder.Save(stream); var bitmap = new Drawing.Bitmap(stream); var downsample = new Downsampler(); var result = downsample.DownSample(bitmap, DIGIT_HEIGHT, DIGIT_WIDTH); var image = new Drawing.Bitmap(DIGIT_WIDTH, DIGIT_HEIGHT); for (var i = 0; i < DIGIT_HEIGHT; ++i) { for (var j = 0; j < DIGIT_WIDTH; ++j) { image.SetPixel(j, i, Drawing.Color.FromArgb( 255, (int)result[i * DIGIT_WIDTH + j], (int)result[i * DIGIT_WIDTH + j], (int)result[i * DIGIT_WIDTH + j] )); } } RecComp.Source = Imaging.CreateBitmapSourceFromHBitmap( image.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); if (network == null) { return; } var input = new ImageMLData(bitmap); input.Downsample(downsample, false, DIGIT_HEIGHT, DIGIT_WIDTH, 1, -1); int winner = network.Winner(input); RecDigit.Text = winner.ToString(); var data = network.Compute(input); for (var i = 0; i < DIGITS_COUNT; ++i) { Results[i] = new ResultObject { Char = i.ToString(), Result = (data[i] + 1) / 2 }; } }