3

Я реализовал нейронную сеть с использованием библиотеки Encog, как показано ниже,Encog нейронные сети проверки/тестирования

MLDataSet trainingSet = new BasicMLDataSet(XOR_INPUT, XOR_IDEAL); 

    final Propagation train = new Backpropagation(network, trainingSet); 
    int epoch = 1; 
    do { 
     train.iteration(); 
     System.out.println("Epoch #" + epoch + 
       " Error:" + train.getError()); 
       epoch++; 

    } while (train.getError() < 0.009); 

    double e = network.calculateError(trainingSet); 
    System.out.println("Network trained to error :" + e); 
    System.out.println("Saving Network"); 


    EncogDirectoryPersistence.saveObject(new File(FILENAME), network); 
} 


public void loadAndEvaluate(){ 
    System.out.println("Loading Network"); 
    BasicNetwork network = (BasicNetwork) EncogDirectoryPersistence.loadObject(new File(FILENAME)); 

    BasicMLDataSet trainingSet = new BasicMLDataSet(XOR_INPUT,XOR_IDEAL); 

    double e = network.calculateError(trainingSet); 

    System.out.println("Loaded network's error is (should be the same as above):" + e); 

} 

Это выводит сообщение об ошибке. Но я хочу проверить это с помощью пользовательских данных и проверить, является ли вывод данных для набора данных

ответ

0

Я вижу, что вы следуете примеру одного из примеров сохранения. Чтобы получить выходные данные для некоторого ввода, используйте функцию «вычислять». В качестве примера:

double[] output = new double[1]; 
    network.compute(new double[]{1.0, 1.0}, output); 
    System.out.println("Network output: " + output[0] + " (should be close to 0.0)"); 

Here's Java-руководство пользователя. Это очень полезно.

+0

Я подал в суд следующие данные для обучения и тестирования нейронной сети, но выход не является постоянным. общественности статической двойной train_INPUT [] [] = {{0,0, 0,0}, {1,0 , 0,0}, {0,0 , 1,0}, {1,0 , 1,0} \t \t \t}; \t открытый статический двойной тестер [] = {1.0, 0.0} ,; \t public static double train_IDEAL [] [] = {{0.0}, {1.0}, {1.0}, {0.0}}; – jee1tha

+0

Я просто замечаю, что ваше условие цикла - train.getError() <0.009. Разве это не должно быть train.getError()> 0.009? Я использовал сеть 2-3-1 для тестирования и смог перейти к ошибке 0.008. (См. Https://gist.github.com/frankibem/94e588cb2d8ccda2af675f9bde3e25fa и здесь: https://gist.github.com/frankibem/eeaa066595e6ba791dfc6cea558f92ca –