package com.heatonresearch.aifh.ann.train; import com.heatonresearch.aifh.ann.BasicNetwork; import com.heatonresearch.aifh.ann.TestBasicNetwork; import com.heatonresearch.aifh.general.data.BasicData; import org.junit.Assert; import org.junit.Test; import java.util.List; public class TestBackPropagation { /** * The input necessary for XOR. */ public static double XOR_INPUT[][] = { { 0.0, 0.0 }, { 1.0, 0.0 }, { 0.0, 1.0 }, { 1.0, 1.0 } }; /** * The ideal data necessary for XOR. */ public static double XOR_IDEAL[][] = { { 0.0 }, { 1.0 }, { 1.0 }, { 0.0 } }; public static void testXOR(BasicNetwork network, BackPropagation train, int maxEpoch) { int epoch = 1; do { train.iteration(); epoch++; } while(train.getLastError() > 0.01 && epoch<(maxEpoch+10)); Assert.assertEquals(epoch,maxEpoch); } @Test public void testNesterov() { BasicNetwork network = TestBasicNetwork.buildSimpleXOR(); List<BasicData> trainingData = BasicData.combineXY(XOR_INPUT, XOR_IDEAL); // train the neural network final BackPropagation train = new BackPropagation(network, trainingData, 0.7, 0.9); TestBackPropagation.testXOR(network,train,63); } }