예제 #1
0
        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);
            //}
        }
예제 #2
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);
        }
예제 #3
0
#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);
        }