private void Perceptron_MarcadorDeError(object sender, MarcadoresDeErrorEventArgs e) { this.Dispatcher.Invoke(() => text_error.Text = string.Format("Error : {0}", e.Error)); this.Dispatcher.Invoke(() => text_Interacciones.Text = string.Format("Interaccion : {0}", e.Interacciones)); graficaLow.Read(e.Interacciones, e.Error); ////GraficoDeErro.Series[0].Values.Add(e.Error); //serieError.Values.Add(new MeasureModel { Interaccion = e.Interacciones, Value = e.Error }); //axisX.MaxValue = e.Interacciones + 50; //axisX.MinValue = e.Interacciones - 50; //if (serieError.Values.Count > 100) //{ // // GraficoDeErro.Series[0].Values.RemoveAt(0); // serieError.Values.RemoveAt(0); //} }
/// <summary> /// Inicia el entrenamiento de la red. /// </summary> /// <param name="entradas">Entradas del archivo .csv</param> /// <param name="salidasDeseadas">Salidas del archivo .csv</param> /// <param name="intercciones">Cantidad de ciclos hasta que aprenda</param> /// <param name="errorAceptable">Porcentaje de error hasta que se considere que la red aprendio</param> /// <param name="factorPasos"> factor que establece que en que tanto se debe avanzar hasta llegar al minimo local.</param> /// <returns></returns> public bool Entrenamiento(List <double[]> entradas, List <double[]> salidasDeseadas, double intercciones, double errorAceptable, double factorPasos, CancellationToken token) { double bufferinteracciones = 0; // iniciamos el error con un numero muy grande para que no haiga manera de que se saltee el entrenamiento. while (Error > errorAceptable) { if (token.IsCancellationRequested) { break; } MarcadoresDeErrorEventArgs errorEventArgs = new MarcadoresDeErrorEventArgs(); intercciones--; bufferinteracciones++; if (intercciones <= 0) { return(false); } RetroPropagacion(entradas, salidasDeseadas, factorPasos); Error = ErrorGeneral(entradas, salidasDeseadas); if ((Error - errorAceptable) <= 0.000001d) { errorEventArgs.Interacciones = bufferinteracciones; errorEventArgs.Error = Error; OnMarcadorDeError(this, errorEventArgs); } else { if (bufferinteracciones < 10) { errorEventArgs.Interacciones = bufferinteracciones; errorEventArgs.Error = Error; OnMarcadorDeError(this, errorEventArgs); } else if (bufferinteracciones > 10 && bufferinteracciones <= 100) { if (bufferinteracciones % 10 == 0) { errorEventArgs.Interacciones = bufferinteracciones; errorEventArgs.Error = Error; OnMarcadorDeError(this, errorEventArgs); } } else { if (bufferinteracciones % 100 == 0) { errorEventArgs.Interacciones = bufferinteracciones; errorEventArgs.Error = Error; OnMarcadorDeError(this, errorEventArgs); } } } } return(true); }
#pragma warning restore CS1591 // Falta el comentario XML para el tipo o miembro visible públicamente #pragma warning disable CS1591 // Falta el comentario XML para el tipo o miembro visible públicamente protected virtual void OnMarcadorDeError(object o, MarcadoresDeErrorEventArgs e) #pragma warning restore CS1591 // Falta el comentario XML para el tipo o miembro visible públicamente { MarcadorDeError?.Invoke(o, e); }