Encog神经网络验证/测试

3
我使用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);

}

这将输出错误信息。 但我想使用自定义数据测试,并检查一组数据的输出是否为

1个回答

0

我看到你正在跟随持久性示例。要获得某些输入的输出,请使用“compute”函数。例如:

    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)");

这里是Java用户指南。它非常有帮助。


我使用了以下数据来训练和测试神经网络,但输出结果不是恒定的。 public static double train_INPUT[][] = { {0.0, 0.0}, {1.0, 0.0}, {0.0, 1.0}, {1.0, 1.0} }; public static double tester[] ={1.0, 0.0},; 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) - Frank Ibem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接