Beispiel #1
0
    void EntrenarRed()
    {
        float error = 1;
        int   epoch = 0; // cantidad de veces que haces el entrenamiento

        while ((error > 0.05f) && (epoch < 50000))
        {
            error = 0;
            epoch++;

            for (int i = 0; i < entrenamiento.GetLength(0); i++)
            {
                for (int j = 0; j < numInput; j++)
                {
                    red.SetInput(j, entrenamiento[i, j]);
                }

                for (int j = numInput; j < numInput + numOutput; j++)
                {
                    red.SetOutputDeseado(j - numInput, entrenamiento[i, j]);
                }

                red.FeedForward();
                error += red.CalcularError();
                red.BackPropagation();
            }

            // VER COMO EVOLUCIONA EL ERROR A MEDIDA QUE AVANZAN LOS EPOCHS
            error /= entrenamiento.GetLength(0);
        }
    }
    //Se entrena la red neural con los valores del entrenamiento predeterminado
    private void EntrenarRed()
    {
        float error = 1;
        int   epoch = 0;

        //Se reentrena numerosas veces ya que los primeros pesos son aleatorios y tienes que asegurar un primer entrenamiento optimo
        while ((error > 0.05f) && (epoch < 50000))
        {
            error = 0;
            epoch++;
            for (int i = 0; i < entrenamiento.GetLength(0); i++)
            {
                //Entrenar la red
                for (int j = 0; j < numInput; j++)
                {
                    red.SetInput(j, entrenamiento[i, j]);
                }

                //Ajusta los outputs deseados
                for (int j = numInput; j < numInput + numOutput; j++)
                {
                    red.SetOutputDeseado(j - numInput, entrenamiento[i, j]);
                }

                //Calculo de los valores de las neuronas
                red.FeedForward();
                error += red.CalcularError();
                red.BackPropagation();
            }
            error /= entrenamiento.GetLength(0);
            // VER COMO EVOLUCIONA EL ERROR A MEDIDA QUE AVANZAN LOS EPOCHS
        }
    }
Beispiel #3
0
    private void EntrenarRed()
    {
        float error = 1;
        int   epoch = 0;

        //Debug.Log("entrenamiento.GetLength(0) " + entrenamiento.GetLength(0));
        while ((error > 0.05f) && (epoch < 50000))
        {
            error = 0;
            epoch++;
            for (int i = 0; i < entrenamiento.GetLength(0); i++)
            {
                for (int j = 0; j < numInput; j++)
                {
                    //Debug.Log("i: " + i + " j: " + j);
                    red.SetInput(j, entrenamiento[i, j]);
                }
                for (int j = numInput; j < numInput + numOutput; j++)
                {
                    red.SetOutputDeseado(j - numInput, entrenamiento[i, j]);
                }
                red.FeedForward();
                error += red.CalcularError();
                red.BackPropagation();
            }
            error /= entrenamiento.GetLength(0);
            // VER COMO EVOLUCIONA EL ERROR A MEDIDA QUE AVANZAN LOS EPOCHS
        }
    }
Beispiel #4
0
    //funcion que entrena a la red con la matriz de entrenamiento
    //si clicamos el bool randomLearn en el inspector, la matriz de entrenamiento se iniciara con valores aleatorios
    private void EntrenarRed()
    {
        float error = 1;
        int   epoch = 0;

        if (randomLearn)
        {
            for (int i = 0; i < entrenamiento.GetLength(0); i++)
            {
                for (int j = 0; j < entrenamiento.GetLength(1); j++)
                {
                    entrenamiento[i, j] = Random.Range(0, 0.99f);
                }
            }
        }

        while ((error > 0.05f) && (epoch < 50000))
        {
            error = 0;
            epoch++;
            for (int i = 0; i < entrenamiento.GetLength(0); i++)
            {
                for (int j = 0; j < numInput; j++)
                {
                    red.SetInput(j, entrenamiento[i, j]);
                }
                for (int j = numInput; j < numInput + numOutput; j++)
                {
                    red.SetOutputDeseado(j - numInput, entrenamiento[i, j]);
                }
                red.FeedForward();
                error += red.CalcularError();
                red.BackPropagation();
            }
            error /= entrenamiento.GetLength(0);
            // VER COMO EVOLUCIONA EL ERROR A MEDIDA QUE AVANZAN LOS EPOCHS
        }
    }