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 } }
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 } }
//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 } }