Example #1
0
 public RedNeuronal(double[,] salidasDeseadas, int patrones,
                    double[,] entradas, int BackPropagation = 0)
 {
     this.Patrones    = patrones;
     CantidadEntradas = entradas.GetLength(1);
     CantidadSalidas  = salidasDeseadas.GetLength(1);
     MapEntradas(entradas);
     MapSalidasDeseadas(salidasDeseadas);
     ErroresLinealUltimaCapa = new double[CantidadSalidas];
     MayoresEntradas         = new double[Entradas.GetLength(1)];
     MayoresSalidas          = new double[SalidasDeseadas.GetLength(1)];
     NormalizarPatrones();
     variacionRealDeseada        = new double[CantidadSalidas * 2];
     this.AlgoritmoEntrenamiento = BackPropagation;
 }
Example #2
0
 private void NormalizarPatrones()
 {
     BuscarMayores();
     for (int i = 0; i < Entradas.GetLength(0); i++)
     {
         for (int j = 0; j < Entradas.GetLength(1); j++)
         {
             Entradas[i, j] /= MayoresEntradas[j];
         }
     }
     for (int i = 0; i < SalidasDeseadas.GetLength(0); i++)
     {
         for (int j = 0; j < SalidasDeseadas.GetLength(1); j++)
         {
             SalidasDeseadas[i, j] /= MayoresSalidas[j];
         }
     }
 }
Example #3
0
 private void BuscarMayores()
 {
     for (int i = 0; i < Entradas.GetLength(0); i++)
     {
         for (int j = 0; j < Entradas.GetLength(1); j++)
         {
             if (Entradas[i, j] > MayoresEntradas[j])
             {
                 MayoresEntradas[j] = Entradas[i, j];
             }
         }
     }
     for (int i = 0; i < SalidasDeseadas.GetLength(0); i++)
     {
         for (int j = 0; j < SalidasDeseadas.GetLength(1); j++)
         {
             if (Math.Abs(SalidasDeseadas[i, j]) > Math.Abs(MayoresSalidas[j]))
             {
                 MayoresSalidas[j] = SalidasDeseadas[i, j];
             }
         }
     }
 }