private void GuardarSalida(PerceptronMulticapa neurona) { try { StreamWriter archivo = new StreamWriter("entrenamiento.txt"); string auxiliar = ""; for (int i = 1; i < neurona.nArquitectura.Length; i++) { auxiliar += " " + neurona.nArquitectura[i]; } archivo.WriteLine(neurona.nArquitectura.Length - 1 + auxiliar); archivo.WriteLine(neurona.Alfa); archivo.WriteLine(errorMinimo); for (int i = 1; i <= neurona.Capas - 1; i++) { for (int j = 1; j <= neurona.nArquitectura[i + 1]; j++) { for (int k = 1; k <= neurona.nArquitectura[i]; k++) { archivo.WriteLine(neurona.wPesos[i, k, j]); } } } archivo.WriteLine("\n"); for (int i = 2; i <= neurona.Capas; i++) { for (int j = 1; j <= neurona.nArquitectura[i]; j++) { archivo.WriteLine(neurona.uUmbralesRed[i, j]); } } archivo.WriteLine("\n"); for (int i = 0; i < neurona.numeroPatrones; i++) { for (int j = 0; j < neurona.nArquitectura[i]; j++) { archivo.WriteLine(neurona.sPatronesDeseados[i, j] + "\t" + neurona.ySalida[i, j]); } } archivo.WriteLine("\n"); archivo.WriteLine(neurona.errorEntrenamiento); archivo.Close(); MessageBox.Show("Archivo Creado", "Mensaje del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { throw; } }
/// <summary> /// Metodo boton para llamar a lecturaTxt /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_Entrenar_Click(object sender, EventArgs e) { lecturaTxt(); try { int[] auxiliar = new int[numCapas + 1]; Array.Copy(arquitecturaRed, auxiliar, arquitecturaRed.Length); Array.Sort(auxiliar); neuronasMaximas = auxiliar[auxiliar.Length - 1]; PerceptronMulticapa neuronas = new PerceptronMulticapa(); neuronas.numeroPatrones = numPatrones; neuronas.nArquitectura = numArquitecturatRed; neuronas.xEntrada = patronEntrada; neuronas.errorEntrenamiento = 1; neuronas.Capas = numCapas; neuronas.aActivacion = new double[neuronas.Capas + 1, (int)neuronasMaximas + 1]; neuronas.ySalida = new double[neuronas.numeroPatrones + 1, numArquitecturatRed[neuronas.Capas] + 1]; neuronas.Delta = new double[neuronas.Capas + 1, (int)neuronasMaximas + 1]; neuronas.sPatronesDeseados = new double[neuronas.numeroPatrones + 1, numArquitecturatRed[neuronas.Capas] + 1]; neuronas.errorCuadratico = 0; neuronas.Alfa = alfa; neuronas.sPatronesDeseados = patronSalida; neuronas.crearPesos(); neuronas.crearUmbrales(); neuronas.encuentraMaxMinEntradas(); neuronas.encuentraMaxMinSalidas(); neuronas.normalizarEntrada(); neuronas.normalizarSalida(); while (neuronas.errorEntrenamiento >= errorMinimo && interacciones >= 0) { neuronas.errorCuadratico = 0; for (int i = 0; i < numPatrones; i++) { neuronas.activarEntrada(i); neuronas.propagacionNeuronal(); neuronas.errorCuadrat(i); neuronas.retroPropagacion(i); } neuronas.errorAprendizaje(); interacciones--; } GuardarSalida(neuronas); } catch (Exception ex) { MessageBox.Show("--> " + ex); } }