2015-01-12 4 views
2

수위 예측을위한 네트워크를 만들고 있습니다. Windows 용 NeuroPh 2.91을 사용하고 있습니다. 수위, 강우량, 유입 등 3 가지 입력을 받아들이 기 때문에 네트워크를 3 가지 입력으로 설정했습니다. 나는 다중 레이어 퍼셉트론, tanh를 전달 함수로 사용하고 backpropagation을 9 개의 숨겨진 뉴런으로 학습 규칙으로 사용하고 있습니다.NeuroPh 오류가 줄어들지 않습니다

I는 항상 출력 데 : 그래프에있어서

Starting neural network training... 
Training network try using data set adminshet 
Training error: null 

및 전체 네트워크 오류가 20,000이다. 어떻게해야합니까? 나는 ANN과 Neuroph에게 정말로 새로운 사람입니다.

+0

이것은 프로그래밍 질문으로 보이지 않지만 기존 프로그램 "NeuroPh"를 사용하는 방법에 대한 질문입니다. – MSalters

+0

네,하지만 평판이 없다면 NeuroPH 태그를 추가 할 방법이 없기 때문에 @jalusa가 그것을 추가 할 수 없었고 neuroph 뒤에있는 netbeans를 추가했습니다. – mCeviker

답변

1

여기에도 같은 문제가 있습니다. 비슷한 설정. Max-Iterations를 강력하게 제한하면, 저에게 효과적입니다. 예 : NeurophStudio에 버그가 있다고 생각합니다.

나를 위해 일한 간단한 팁 : 직접 해보세요. Eclipse를 열고 프로젝트를 추가하고, Neuroph jar를 추가하고 네트워크를 구축하십시오. 그것의 하드,하지만 이것은 예상대로 정확하게 작동합니다. 자신의 결과를 csv 파일에 덤프하고 Excel로 표시해야합니다. 그러나 ANN 처리는 "gui"를 클릭하기 만하면 작동하지 않습니다.

package de.sauer.dispe; 

import org.neuroph.core.Layer; 
import org.neuroph.core.NeuralNetwork; 
import org.neuroph.core.Neuron; 
import org.neuroph.core.data.DataSet; 
import org.neuroph.core.transfer.Linear; 
import org.neuroph.core.transfer.Tanh; 
import org.neuroph.nnet.MultiLayerPerceptron; 
import org.neuroph.nnet.learning.BackPropagation; 

public class DirSpeCntrl { 

    private static final int MAX_ITER = 2000; 
    private static final double MAX_ERROR = 0.005; 
    private static final double LEARNING_RATE = 0.1; 

    public static void main(String[] args) { 
     System.out.println("Create ANN"); 
     NeuralNetwork<BackPropagation> nn = new MultiLayerPerceptron(3, 15, 15, 1); 

     // Setting ALL neurons to TanH transferfunction (important, if you have negativ values) 
     Layer[] layers = nn.getLayers(); 
     for(Layer curLayer: layers) { 
      for(Neuron curNeuron: curLayer.getNeurons()) { 
       curNeuron.setTransferFunction(new Tanh()); 
      } 
     } 

     for(Neuron curNeuron: layers[3].getNeurons()) { 
      curNeuron.setTransferFunction(new Linear()); 
     } 

     nn.randomizeWeights(); 

     System.out.println("Load Sampledata..."); 
     DataSet ds = DataSet.createFromFile(
       "C:\\Users\\meist_000\\Documents\\Thesis\\vanilla_eng.csv", 
       3, 1, ";"); 

     System.out.println("done: "+ds.getRows().size()+". Learn..."); 

     // Setting stuff 
     BackPropagation lr = new BackPropagation(); 
     lr.setLearningRate(LEARNING_RATE); 
     lr.setMaxIterations(MAX_ITER); 
     lr.setTrainingSet(ds); 
     lr.setNeuralNetwork(nn); 
     nn.setLearningRule(lr); 

//  bla.learn(ds); Faster bulk operation... 

     // Slower single operation with logging: 
     for(int i=0;i<MAX_ITER;i++) { 
      lr.doLearningEpoch(ds); 
      double curError = lr.getTotalNetworkError(); 
      System.out.println(curError); 

      if(curError < MAX_ERROR) { 
       System.out.println("Stopped on "+i); 
       break; 
      } 
     } 

     // Testing the network 
     nn.setInput(new double[] {0.080484492, -0.138512128, -0.140826873}); 
     nn.calculate(); 
     double[] prediction = nn.getOutput(); 
     System.out.println("Pred: "+prediction[0]); 
    } 

} 
관련 문제