我一直在使用.NET框架来训练神经网络,而且我的数据集非常庞大,输入数量很大。
我已经决定切换到Encog,因为我使用的旧框架存在一些问题,而且因为Encog看起来更丰富并且提供了额外的功能。
我的问题是Encog一次将所有训练数据加载到2D数组中,这对我来说并不合适,因为我有一个非常大的数据集。我已尝试解决此问题,并检查了其他问题(例如this one但无法找到答案)。
我尝试使用SQLNeuralDataSet和其他支持流操作的实现,但它们似乎最终都将数据加载到内存中(使用MemoryDataLoader),这并不能解决我的问题。
有没有办法可以一次加载(和训练)我的网络一个项目?或者这个选项在Encog中不可用?
由于
修改
我最终复制了源代码并根据我的需要进行了修改。基本上,根据文档,这一切都归结为Process(IMLDataPair pair)
中的GradientWorker
:
处理一个训练集元素。
答案 0 :(得分:1)
查看Encog数据源的source code,有很多选项。请查看/// This class is not memory based, so very long files can be used, without
/// running out of memory. This dataset uses a Encog binary training file as a
/// buffer.
,例如:
\t