@@ -0,0 +1,1814 @@
+package hex;%0A%0Aimport hex.nn.NN;%0Aimport hex.nn.NNModel;%0Aimport junit.framework.Assert;%0Aimport org.junit.BeforeClass;%0Aimport org.junit.Test;%0Aimport water.JUnitRunnerDebug;%0Aimport water.Key;%0Aimport water.TestUtil;%0Aimport water.UKV;%0Aimport water.fvec.Frame;%0Aimport water.fvec.NFSFileVec;%0Aimport water.fvec.ParseDataset2;%0Aimport water.util.Log;%0A%0Apublic class NeuralNetSpiralsTest2 extends TestUtil %7B%0A  @BeforeClass public static void stall() %7B%0A    stall_till_cloudsize(JUnitRunnerDebug.NODES);%0A  %7D%0A%0A  @Test public void run() %7B%0A    Key file = NFSFileVec.make(find_test_file(%22smalldata/neural/two_spiral.data%22));%0A    Key parse = Key.make();%0A    Frame frame = ParseDataset2.parse(parse, new Key%5B%5D%7Bfile%7D);%0A%0A    NN p = new NN();%0A    p.seed = 7401699394609084302l;%0A    p.rate = 0.007;%0A    p.rate_annealing = 0;%0A    p.epochs = 20000;%0A    p.hidden = new int%5B%5D%7B100%7D;%0A    p.activation = NN.Activation.Tanh;%0A    p.max_w2 = Double.MAX_VALUE;%0A    p.l1 = 0;%0A    p.l2 = 0;%0A    p.momentum_start = 0;%0A    p.momentum_ramp = 0;%0A    p.momentum_stable = 0;%0A    p.initial_weight_distribution = NN.InitialWeightDistribution.Normal;%0A    p.initial_weight_scale = 2.5;%0A    p.loss = NN.Loss.CrossEntropy;%0A    p.source = frame;%0A    p.response = frame.lastVec();%0A    p.validation = null;%0A    p.score_interval = 10;%0A    p.exec();%0A%0A    NNModel mymodel = UKV.get(p.dest());%0A    Frame pred = mymodel.score(frame);%0A%0A    water.api.ConfusionMatrix CM = new water.api.ConfusionMatrix();%0A    CM.actual = frame;%0A    CM.vactual = frame.lastVec();%0A    CM.predict = pred;%0A    CM.vpredict = pred.vecs()%5B0%5D;%0A    CM.serve();%0A    StringBuilder sb = new StringBuilder();%0A    double error = CM.toASCII(sb);%0A    Log.info(sb);%0A    if (error != 0) %7B%0A      Assert.fail(%22Classification error is not 0, but %22 + error);%0A    %7D%0A    frame.delete();%0A    mymodel.delete();%0A  %7D%0A%7D%0A

Add spirals test case for NN.