Example #1
0
        private void Learning()
        {
            while (true)
            {
                if (isCanChange) //для синхронизации потоков
                {
                    for (int k = 0; k < 10000; k++) //обучаем Х раз на одних и тех же данных
                    {
                        for (int i = 0; i < listPoints.Count; i++)
                        {
                            double[] inp = new double[] { listPoints[i].x, listPoints[i].y , 1};//(double) r.Next(-500, 500) / 234.0};
                            nn.feedForward(inp); //рассчитываем результат

                            double[] targets = new double[] { listPoints[i].color, -listPoints[i].color };
                            nn.backpropagation(targets); //корректируем результат
                        }
                    }
                    ReDraw(); //отображаем результат обучения
                }
            }
        }
Example #2
0
 private void ReDraw()
 {
     for (int i = 0; i < sizeX; i++)
     {
         for (int j = 0; j < sizeY; j++)
         {
             double[] inp = new double[] { i - x0, y0 - j };
             double[] res = nn.feedForward(inp);
             try
             {
                 bm.SetPixel(i, j, Color.FromArgb((byte)(255 * res[1]), 0, (byte)(255 * res[0])));
             }
             catch {}
         }
     }
     for (int i = 0; i < listPoints.Count; i++)
     {
         Color color = Color.FromArgb((byte)(125 - 125 * listPoints[i].color), 0, (byte)(125 + 125 * listPoints[i].color));
         graphics.FillEllipse(Brushes.White, (int)(x0 + (listPoints[i].x - 5)), (int)(y0 - (listPoints[i].y + 5)), 10, 10);
         graphics.FillEllipse(new SolidBrush(color), (int)(x0 + (listPoints[i].x - 4)), (int)(y0 - (listPoints[i].y + 4)), 8, 8);
     }
     pictureBox1.Image = (Image)bm;
 }