Java Encog-如何为神经网络加载训练数据

Java Encog-如何为神经网络加载训练数据,java,machine-learning,artificial-intelligence,neural-network,encog,Java,Machine Learning,Artificial Intelligence,Neural Network,Encog,我在实际操作中看到的NeuralDataSet对象只是XOR,它只是两个小数据数组。。。我无法从MLDataSet上的文档中找出任何东西 似乎所有的东西都必须马上装上。然而,我想循环使用训练数据,直到达到EOF,然后将其计为1个历元。。但是,我所看到的所有数据都必须从一开始就加载到2D数组中。我怎样才能避开这件事 。除此之外,我在这里还没有发现类似的问题。这是可能的,您可以使用支持流式操作的数据集的现有实现,也可以在任何源上实现自己的。请查看并以代码为例。如果您有特定的格式,则必须实现编解码器。

我在实际操作中看到的
NeuralDataSet
对象只是XOR,它只是两个小数据数组。。。我无法从
MLDataSet
上的文档中找出任何东西

似乎所有的东西都必须马上装上。然而,我想循环使用训练数据,直到达到EOF,然后将其计为1个历元。。但是,我所看到的所有数据都必须从一开始就加载到2D数组中。我怎样才能避开这件事


。除此之外,我在这里还没有发现类似的问题。

这是可能的,您可以使用支持流式操作的数据集的现有实现,也可以在任何源上实现自己的。请查看并以代码为例。如果您有特定的格式,则必须实现编解码器。对于CSV,已经有了一个实现,但我还没有检查它是否基于内存


请记住,在执行此操作时,您的数据将在每个历元中完全流式传输,根据我的经验,这是一个比网络实际计算更高的瓶颈

出于好奇:你为什么要流式传输数据,这是一个内存/容量问题吗?@ElmarWeber,因为数据相当大,更重要的是,我已经用另一个神经网络实现了。这个实现一次反向传播一个输入,我只是在整个输入文件中循环,并为每个扫描的项目调用mlp.backprop(nextInput)。基本上,我训练网络的数据来自布朗语料库。这与使用简单XOR的示例不同,在这里我可以硬编码。目前,我有棕色的语料库文件,其中每个单词和标记都用空格分隔。我目前使用的网络不是将整个语料库加载到内存中,而是逐句加载,一次训练(反向传播)一个单词。这有意义吗?我只是尝试使用另一个网络,因为我认为我当前使用的网络中可能有一个bug。不确定我是否正确,但您描述它的方式意味着SQLNeuralDataSet的实现方式会起作用,对吗?您可以对每个字的输入和输出值进行编码,运行backprop,获取下一个值,等等。如果您确实希望逐行进行,而不是像默认实现那样成批工作,只需将批大小设置为1。最后,你有两段代码:一个输入和输出项的MultDATA数据和一行一行的数据。好的,事实上,我使用的是文本文件而不是SQL,这使我甚至不考虑SQLNoRalDATA数据集,谢谢,我会研究的。还有一个CSVNeuralDataSet遵循相同的模式,但我没有检查它是否实现了逐行模式,或者只是将整个文件加载到内存中。