@SuppressWarnings("unused") public void treinamento( Double[][] amostras, Double[][] esperado, double taxaDeAprendizado, double precisao) { double erroAnterior, erroTemp; if (!pesosSetados) { inicializarPesos(amostras[0].length); } this.erroMedio = 0.0; this.quantEpocas = 0; strResult.append("\n--------------------- Treinamento -------------------\n"); strResult.append("Pesos Iniciais \n"); for (int i = 0; i < camadasIntermediarias.size(); i++) { strResult.append("Camada " + i + "\n"); pesosCamada(camadasIntermediarias.get(i)); } strResult.append("Camada de Saida\n"); pesosCamada(camadaDeSaida); do { erroTemp = 0.0; erroAnterior = this.erroMedio; /* Irá percorrer todas as amostras e calcular o erro médio */ for (int i = 0; i < amostras.length; i++) { camadasIntermediarias.get(0).combinarEntradas(amostras[i]); camadasIntermediarias.get(0).gerarSaidas(); for (int j = 1; j < camadasIntermediarias.size(); j++) { camadasIntermediarias .get(j) .combinarEntradas(camadasIntermediarias.get(j - 1).getVetorSaida()); camadasIntermediarias.get(j).gerarSaidas(); } camadaDeSaida.combinarEntradas( camadasIntermediarias.get(camadasIntermediarias.size() - 1).getVetorSaida()); camadaDeSaida.gerarSaidas(); camadaDeSaida.calcularGradiente(esperado[i]); camadaDeSaida.ajustarPesos( taxaDeAprendizado, camadasIntermediarias.get(camadasIntermediarias.size() - 1).getVetorSaida()); ajustarCamadasIntermediarias(amostras, taxaDeAprendizado, i); erroTemp += Math.abs(calcularErro(esperado[i])); } erroMedio = erroTemp / amostras.length; quantEpocas++; } while (this.erroMedio > precisao); strResult.append("\nTreinado por " + quantEpocas + " épocas.\n"); strResult.append("\nPesos Finais \n"); for (int i = 0; i < camadasIntermediarias.size(); i++) { strResult.append("Camada " + i + "\n"); pesosCamada(camadasIntermediarias.get(i)); } strResult.append("Camada de Saida\n"); pesosCamada(camadaDeSaida); imprimirCamadaDeSaida(); }
public void executar(Double[] amostras) { if (camadasIntermediarias.size() > 0) { camadasIntermediarias.get(0).combinarEntradas(amostras); camadasIntermediarias.get(0).gerarSaidas(); for (int i = 1; i < camadasIntermediarias.size(); i++) { camadasIntermediarias .get(i) .combinarEntradas(camadasIntermediarias.get(i - 1).getVetorSaida()); camadasIntermediarias.get(i).gerarSaidas(); } camadaDeSaida.combinarEntradas( camadasIntermediarias.get(camadasIntermediarias.size() - 1).getVetorSaida()); camadaDeSaida.gerarSaidas(); strResult.append("\nSaida " + Arrays.toString(camadaDeSaida.getVetorSaida())); } else { camadaDeSaida.combinarEntradas(amostras); camadaDeSaida.gerarSaidas(); } imprimeVetor(camadaDeSaida.getVetorSaida()); }