コード例 #1
0
        public static void Train(PointsConverted pointsConvertedA, PointsConverted pointsConvertedB = null, bool debug = true)
        {
            network = new BasicNetwork();
            network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, N_input));
            network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, N_hidden));
            network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, N_output));
            network.Structure.FinalizeStructure();
            network.Reset();

            pointsConvertedA.Juntar(pointsConvertedB);

            var trainingSet = new BasicNeuralDataSet(pointsConvertedA.entrada, pointsConvertedA.saida);
            var train       = new Backpropagation(network, trainingSet);

            var epoch = 0;

            do
            {
                train.Iteration();

                if (debug)
                {
                    Console.WriteLine("Epoch #" + epoch + " Error:" + train.Error);
                }

                epoch++;
            }while ((epoch <= 20000) || (train.Error > 0.001));
        }
        static void Main()
        {
            do
            {
                Console.Clear();
                Console.WriteLine("MENU: \n 1 - Treinar \n 2 - Carregar Rede Neural \n 3 - Salvar Rede Neural \n 4 - Executar \n 0 - Sair");
                var op = Console.ReadKey().KeyChar;
                if (op == '1')//treinar
                {
                    using (var ofd = new OpenFileDialog()
                    {
                        Filter = "Arquivo Treino File|*.txt", Title = "Selecione o arquivo de treino: "
                    })
                    {
                        if (ofd.ShowDialog() == DialogResult.OK)
                        {
                            using (var ofd2 = new OpenFileDialog()
                            {
                                Filter = "Arquivo Treino File|*.txt", Title = "Selecione o arquivo de treino: "
                            })
                            {
                                Console.Clear();
                                Console.WriteLine("Aguarde...");
                                var neuralFile_A = File.ReadAllLines(ofd.FileName);
                                var pc_A         = PointsConvertor.Converter(neuralFile_A);

                                PointsConverted pc_B = null;
                                if (ofd2.ShowDialog() == DialogResult.OK)
                                {
                                    var neuralFile_B = File.ReadAllLines(ofd2.FileName);
                                    pc_B = PointsConvertor.Converter(neuralFile_B);
                                }
                                var inicio = DateTime.Now;
                                MLP.Train(pc_A, pc_B);
                                Console.WriteLine("Treino realizado com sucesso \n Inicio: " + inicio.ToLongTimeString() + " \n Fim: " + DateTime.Now.ToLongTimeString());
                                Console.ReadKey();
                            }
                        }
                    }
                }
                else if (op == '2')//carregar rede neural
                {
                    using (var ofd = new OpenFileDialog()
                    {
                        Filter = "MLP Files|*.mlp", Title = "Selecione o arquivo de rede neural: "
                    })
                    {
                        if (ofd.ShowDialog() == DialogResult.OK)
                        {
                            try
                            {
                                Console.Clear();
                                Console.WriteLine("Aguarde...");
                                MLP.LoadNetwork(ofd.FileName);
                                Console.WriteLine("Rede neural recarregada com sucesso.");
                                Console.ReadKey();
                            }
                            catch (Exception)
                            {
                                Console.WriteLine("Erro na leitura dos dados.");
                                Console.ReadKey();
                            }
                        }
                    }
                }
                else if (op == '3')//salvar rede neural
                {
                    using (var ofd = new SaveFileDialog()
                    {
                        Filter = "MLP Files|*.mlp", Title = "Salve o arquivo de rede neural: "
                    })
                    {
                        if (ofd.ShowDialog() == DialogResult.OK)
                        {
                            Console.Clear();
                            Console.WriteLine("Aguarde...");
                            var retorno = MLP.SaveNetwork(ofd.FileName);
                            Console.WriteLine("Arquivo salvo em: " + retorno);
                            Console.ReadKey();
                        }
                    }
                }
                else if (op == '4')//executar simulação
                {
                    Console.Clear();
                    Console.WriteLine("Aguarde...");
                    Executa();
                }
            }while (true);
        }