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); }