Я реализовал нейронную сеть с использованием библиотеки 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);
}
Это выводит сообщение об ошибке. Но я хочу проверить это с помощью пользовательских данных и проверить, является ли вывод данных для набора данных
Я подал в суд следующие данные для обучения и тестирования нейронной сети, но выход не является постоянным. общественности статической двойной 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
Я просто замечаю, что ваше условие цикла - 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 –