Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 3
0
        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
                };
            }
        }