2016-10-10 2 views
0

Я изучаю, как работать с encog библиотека для java. Я пытаюсь создать RBF Network для функции aproximating. Я использую метод SVDTraining, но сетевая ошибка не уменьшается. Он остается на том же уровне, что и в начале обучения. И я не знаю, почему.encog Обучение RBF

  MLDataSet trainingSet = new BasicMLDataSet(trainData); 
      MLDataSet testingSet = new BasicMLDataSet(testData); 

      RadialBasisFunction fnc[] = {new GaussianFunction(1)}; 
      RBFNetwork rbf= new RBFNetwork(1,1,fnc); 

      //Create the training set and train. 
      MLTrain train = new SVDTraining(rbf, trainingSet); 


      int epoch = 1; 

      File f = new File("Error.csv"); 
      PrintWriter pw = new PrintWriter(f); 
      StringBuilder sb = new StringBuilder(); 

      do { 
       train.iteration(); 

       System.out.println(rbf.getRBF().length+";"+rbf.getInputCount()+";"+rbf.getOutputCount()); 
       System.out.println("Epoch #" + epoch + " Error:" + train.getError()); 
       epoch++; 

       String x = String.valueOf(epoch).replace(".", ","); 
       String y = String.valueOf(train.getError()).replace(".", ","); 
       sb.append(x); 
       sb.append(';'); 
       sb.append(y); 
       sb.append('\n'); 
      } while((train.getError() > MAX_ERROR)&&(epoch < ITERATIONS)); 

Вот отрывок из моего кода (создание и обучение части) Большое спасибо за каждый ответ.

ответ

0

SVD - это единственный шаг решения.

//SVD is a single step solve 
int epoch = 1; 
do 
{ 
    train.iteration(); 
    System.out.println("Epoch #" + epoch + " Error:" + train.getError()); 
    epoch++; 
} while ((epoch < 1) && (train.getError() > 0.001)); 

Это будет только повторение 1 раз.

Смежные вопросы