Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package rna_seguidor;
- import java.io.File;
- import org.encog.engine.network.activation.ActivationSigmoid;
- import org.encog.mathutil.randomize.ConsistentRandomizer;
- import org.encog.ml.data.MLData;
- import org.encog.ml.data.MLDataPair;
- import org.encog.ml.data.MLDataSet;
- import org.encog.ml.data.basic.BasicMLDataSet;
- import org.encog.neural.networks.BasicNetwork;
- import org.encog.neural.networks.layers.BasicLayer;
- import org.encog.neural.networks.training.Train;
- import org.encog.neural.networks.training.propagation.back.Backpropagation;
- import org.encog.persist.EncogDirectoryPersistence;
- public class treina {
- public static double X[][] = { { 0.0, 0.0, 0.0 }, //Dados de entrada para treinamento
- { 0.0, 0.0, 0.0 },
- { 0.0, 0.0, 0.0 },
- { 0.0, 0.0, 0.0 },
- { 0.0, 0.0, 0.0 },
- { 0.0, 0.0, 0.0 },
- { 0.0, 0.0, 0.0 },
- { 0.0, 0.0, 0.0 }
- };
- public static double Y[][] = { { 0.0, 0.0 }, //Dados de saída para treinamento
- { 0.0, 0.0 },
- { 0.0, 0.0 },
- { 0.0, 0.0 },
- { 0.0, 0.0 },
- { 0.0, 0.0 },
- { 0.0, 0.0 },
- { 0.0, 0.0 }
- };
- public static void main(final String args[]) {
- final BasicNetwork rna = new BasicNetwork(); //Cria rede neural feedforward
- rna.addLayer(new BasicLayer(new ActivationSigmoid(), true, 3)); //Camada de entrada com 3 neurônios (função de ativação tangente sigmoidal e bias ativado)
- rna.addLayer(new BasicLayer(new ActivationSigmoid(), true, 5)); //Camada de neurônios ocultos com 5 neurônios
- rna.addLayer(new BasicLayer(new ActivationSigmoid(), false, 2)); //Camada de saída com 2 neurônios
- rna.getStructure().finalizeStructure(); //Finaliza a configuração da rede
- rna.reset();
- new ConsistentRandomizer(-1,1,500).randomize(rna); //Valores aleatórios nos pesos (valor mínimo, valor máximo, seed)
- System.out.println("Valores iniciais dos pesos:\n" + rna.dumpWeights() + "\n");
- MLDataSet data_treina = new BasicMLDataSet(X, Y); //Setar arquivos de treinamento
- //Treinamento em backpropagation
- final Train treina = new Backpropagation(rna,data_treina,0.7, 0.9); //(rede a ser treinada, arquivos de treinamento, taxa de aprendizagem, taxa de momentum)
- int epoca = 1;
- System.out.println("Treinamento:");
- do {
- treina.iteration(); //Backpropagation expõe os dados à rede
- System.out.println("Época: " + epoca + " | Erro:" + treina.getError());
- epoca++;
- } while((epoca < 5000) && (treina.getError() > 0.001)); //A rede irá treinar até quando a taxa de erro for menor que 0,1% ou atingir 5000 épocas
- System.out.println("\nResultados do Treinamento da RNA:\n");
- for (MLDataPair data_pair: data_treina) { //Data_pair recebe os dados de treinamento
- final MLData saida = rna.compute(data_pair.getInput()); //Saida recebe os dados de saída da RNA
- System.out.println("Saída 1 da RNA= " + saida.getData(0) + " | Valor ideal= " + data_pair.getIdeal().getData(0));
- System.out.println("Saída 2 da RNA= " + saida.getData(1) + " | Valor ideal= " + data_pair.getIdeal().getData(1) + "\n");
- }
- EncogDirectoryPersistence.saveObject(new File("rna_seguidor.eg"), rna); //Salva o treinamento em um arquivo .eg
- }
- }
Add Comment
Please, Sign In to add comment