2013-02-02 67 views
3

我是機器學習的新手,我正在研究一個Java應用程序,該應用程序使用它的圖像對對象進行分類。我有40個輸入神經元和n個輸出神經元(取決於訓練數據的數量)。我使用Encog作爲我的神經網絡的框架。我能夠成功地訓練數據,但在我測試網絡時,它似乎不能很好地工作。它無法正確分類對象。 下面是訓練部分:使用Encog的神經網絡分類器

BasicNetwork network = new BasicNetwork(); 
    network.addLayer(new BasicLayer(null,true,i)); 
    network.addLayer(new BasicLayer(new ActivationSigmoid(),true,h)); 
    network.addLayer(new BasicLayer(new ActivationSigmoid(),false,o));  
    network.getStructure().finalizeStructure(); 
    network.reset(); 


    // train the neural network 
    final Backpropagation train = new Backpropagation(network, trainingSet, lr, 0.3); 
    train.fixFlatSpot(false); 

    w = new SwingWorker(){ 

     @Override 
     protected Object doInBackground() throws Exception {    
      // learn the training set 

      int epoch = 1; 
      do { 
       train.iteration(); 
       //System.out.println("Epoch #" + epoch + " Error:" + train.getError()); 
       epoch++; 
      } while(train.getError() > me && !isStop); 
      isStop = false; 
     return null; 
     } 
    }; 
    w.execute(); 

和檢測部位:

BasicNetwork network = (BasicNetwork) SerializeObject.load(new File("file/Weights.ser")); 
    MLData input = new BasicMLData(inputCount); 
    input.setData(in); 
    MLData output = network.compute(input); 
    for(int y = 0; y < output.size(); y++){ 
     System.out.println(output.getData(y)); 
    } 

有什麼不對的培訓的一部分?如果我以正確的方式做事,我確實希望有人能指導我。

+0

嗨,我想問你,你如何測試你的網絡與其他例子而不是訓練輸入?謝謝 – user2886091

回答

3

你的意思是說,當你試圖識別你訓練到的完全相同的數據時,你無法識別它?如果是這種情況,那麼我會假設你爲測試和訓練編碼圖像的方式有所不同。

如果您看到的數據與您所使用的數據不同,結果不一致,這是一個不同的(也是常見的)問題。這意味着訓練數據可能不代表整個問題空間。即您正在使用的新數據與訓練數據的差異足夠大,以至於不匹配。