Java Encog:BasicNetwork:没有预构建数据集的在线学习

Java Encog:BasicNetwork:没有预构建数据集的在线学习,java,machine-learning,neural-network,encog,Java,Machine Learning,Neural Network,Encog,我试图使用Encod库作为强化学习问题的函数逼近器。更准确地说,我正在尝试让多层感知器(基本网络)启动并运行。 由于我的代理将以某种方式基于我选择的任何RL算法探索世界,因此我无法预构建任何基本的神经数据集,如图所示,我必须使用pause()和resume()函数,但由于我找不到关于这些函数的任何文档或示例,我对如何使用这些功能有些迷茫(如果它们在我的版本中也可以使用。在阅读了第二个链接中对问题的回答后,我不太确定) 我正在使用Java和encog-core-2.5.3 jar。我目前的做法如下

我试图使用Encod库作为强化学习问题的函数逼近器。更准确地说,我正在尝试让多层感知器(基本网络)启动并运行。 由于我的代理将以某种方式基于我选择的任何RL算法探索世界,因此我无法预构建任何基本的神经数据集,如图所示,我必须使用pause()和resume()函数,但由于我找不到关于这些函数的任何文档或示例,我对如何使用这些功能有些迷茫(如果它们在我的版本中也可以使用。在阅读了第二个链接中对问题的回答后,我不太确定)

我正在使用Java和encog-core-2.5.3 jar。我目前的做法如下:

BasicNetwork network = new BasicNetwork();
network.addLayer(new BasicLayer(null, true,2));
network.addLayer(new BasicLayer(new ActivationTANH(), true,4));
network.addLayer(new BasicLayer(new ActivationTANH(), true,1));
network.getStructure().finalizeStructure();
network.reset();

TrainingContinuation cont = null;
double error = 0;

do {
    int rnd = random.nextInt(trainInputs.length);
    NeuralDataSet trainingSet = new BasicNeuralDataSet(
        new double[][] { trainInputs[rnd] },
        new double[][] { trainOutputs[rnd] });

    Backpropagation train = new Backpropagation(network, trainingSet);

    // train the neural network
    if (cont != null) {
        train.resume(cont);
    }

    train.iteration();
    cont = train.pause();

    error = train.getError();
} while (error > 0.01);
这显然是一个极小的例子,我只是从一个玩具样本(XOR)中随机抽取数据点。发生的情况是MLP不收敛。日志显示了完全随机的错误,因此我假设培训师在某种程度上被重置,并且我的暂停/恢复方法没有正确执行


附言:
因为我不必使用Encoq,但可以使用任何框架,所以我也很欣赏满足我需求的示例代码。到目前为止,我尝试了Weka和Neuroph,但两者似乎都缺乏真正的在线学习,只要有新样本可用,就可以触发训练(必须能够在任何时候对样本进行分类)

很抱歉反应太慢。基本上,听起来你是在要求在线培训。也就是说,您只需呈现一个案例,神经网络权重将立即更新。这样就不需要创建整个训练集,只需根据需要进行训练。不幸的是,Encog对此没有很好的支持。这已经成为一个常见问题,我计划在下一个版本中添加它

现在,您可以做的唯一方法是使用单个项目创建一个训练集,然后为单个迭代进行训练

编辑 自Encog 3.2起,已添加在线培训。有关更多信息,请参阅此常见问题解答


是的,如果能为Encog添加在线支持,那就太好了。我正在做的事情也需要在线支持。你似乎不是唯一的一个。我正在计划下一个版本。嗨,杰夫,谢谢你的图书馆!你知道下一个版本什么时候可以发布吗?参见上面的编辑,但这将添加到Encog 3.2中,该版本将于2014年2月发布。在线培训的更改已经在GitHub中。这还没有完全不描述使用情况,wtf?URL不可用,示例仅用于XOR问题。。。。