gpt4 book ai didi

java - Encog:BasicNetwork:没有预建数据集的在线学习

转载 作者:搜寻专家 更新时间:2023-11-01 01:45:10 24 4
gpt4 key购买 nike

我正在尝试使用 encog 库作为强化学习问题的函数逼近器。更准确地说,我正在尝试启动并运行一个多层感知器 (BasicNetwork)。 由于我的代理会根据我选择的任何 RL 算法以某种方式探索世界,所以我无法预构建任何 BasicNeuralDataSet,如 XOR example 中所示。 . Probably ,我必须使用 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 开始添加了在线培训。有关详细信息,请参阅此常见问题解答。

http://www.heatonresearch.com/faq/5/3

关于java - Encog:BasicNetwork:没有预建数据集的在线学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13126413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com