コード例 #1
0
 public void CreaCapas(int[] NeuronasPorCapa, Random azar)
 {
     Capas = new List <Capa>();
     for (int i = 0; i < NeuronasPorCapa.Length; i++)
     {
         if (i == 0 && i == (NeuronasPorCapa.Length - 1))
         {
             Capas.Add(new Capa(NeuronasPorCapa[i], Entradas.GetLength(1),
                                azar, 2));
         }
         else if (i == 0)
         {
             Capas.Add(new Capa(NeuronasPorCapa[i], Entradas.GetLength(1),
                                azar, 1));
         }
         else if (i == (NeuronasPorCapa.Length - 1))
         {
             Capas.Add(new Capa(NeuronasPorCapa[i], NeuronasPorCapa[i - 1],
                                azar, 2));
         }
         else
         {
             Capas.Add(new Capa(NeuronasPorCapa[i], NeuronasPorCapa[i - 1],
                                azar, 1));
         }
     }
 }
コード例 #2
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;
 }
コード例 #3
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];
         }
     }
 }
コード例 #4
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];
             }
         }
     }
 }