Exemplo n.º 1
0
        public TrainNetworkResponse Ejecute(TrainNetworkRequest request)
        {
            var red    = new Red(request.InputsValues, request.OutputsValues);
            var reader = new ReadWeightsService().Ejecute(new ReadWeightsRequest()
            {
                FileName = request.FileName, Inputs = request.InputsValues[0].Length
            });

            if (reader != null)
            {
                for (var i = 0; i < red.NeuronasOcultas.Length; i++)
                {
                    for (var pesos = 0; pesos < red.NeuronasOcultas[i].Pesos.Length; pesos++)
                    {
                        red.NeuronasOcultas[i].Pesos[pesos] = reader.PesosCapaOculta[i, pesos];
                    }
                    red.NeuronasOcultas[i].Umbral = reader.UmbralesCapaOculta[i];
                }

                red.NeuronaDeSalida.Pesos  = reader.PesosSalida;
                red.NeuronaDeSalida.Umbral = reader.UmbralSalida;
                red.EstaEntrenada          = true;
            }
            else
            {
                red.EstaEntrenada = false;
            }
            red.Entrenar();
            var saveWeightsService = new WriteWeightsService();

            saveWeightsService.Ejecute(new WriteWeightsRequest()
            {
                CapaOculta    = red.NeuronasOcultas,
                NeuronaSalida = red.NeuronaDeSalida,
                UmbralSalida  = red.NeuronaDeSalida.Umbral,
                FileName      = request.FileName
            });
            return(new TrainNetworkResponse()
            {
                Red = red
            });
        }
Exemplo n.º 2
0
        public DiagnosticoResponse Ejecute(DiagnosticoRequest request)
        {
            var red    = new Red(request.InputsValues);
            var reader = new ReadWeightsService().Ejecute(new ReadWeightsRequest()
            {
                Inputs = red.Entradas, FileName = request.NombreDelArchivo
            });

            if (reader != null)
            {
                for (var i = 0; i < red.NeuronasOcultas.Length; i++)
                {
                    for (var pesos = 0; pesos < red.NeuronasOcultas[i].Pesos.Length; pesos++)
                    {
                        red.NeuronasOcultas[i].Pesos[pesos] = reader.PesosCapaOculta[i, pesos];
                    }
                    red.NeuronasOcultas[i].Umbral = reader.UmbralesCapaOculta[i];
                }
                red.NeuronaDeSalida          = new Neurona();
                red.NeuronaDeSalida.Entradas = new double[20];
                red.NeuronaDeSalida.Pesos    = reader.PesosSalida;
                red.NeuronaDeSalida.Umbral   = reader.UmbralSalida;
                red.EstaEntrenada            = true;
                red.FowardPass(request.InputsValues);
            }
            else
            {
                red.EstaEntrenada = false;
            }
            if (Math.Round(red.NeuronaDeSalida.Salida()) == 1)
            {
                return(new DiagnosticoResponse()
                {
                    Diagnostico = "Positivo"
                });
            }
            return(new DiagnosticoResponse()
            {
                Diagnostico = "Negativo"
            });
        }