在Encog中构造大型神经网络时出现OverflowException或OutOfMemoryException

本文关键字:OverflowException OutOfMemoryException 神经网络 Encog 大型 | 更新日期: 2023-09-27 18:03:06

我正在尝试构建一个简单的前馈神经网络,用于Encog在c#中的RGB图像识别。例如,如果我运行以下代码:

        BasicNetwork network = new BasicNetwork();
        network.AddLayer(new BasicLayer(null, true, 60000));
        network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 60000));
        network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, 4));
        network.Structure.FinalizeStructure();
我得到一个系统。OverflowException from encog-core-cs.dll,如果我将两个地方的神经元计数加倍到120,000,我得到一个System.OutOfMemoryException。对于Encog来说,这是一个太大的网络,还是我做错了什么?但如果这太大,我如何使用一个合理大小的图像进行训练,比如200×200?难道我注定要拍小照片吗?

在Encog中构造大型神经网络时出现OverflowException或OutOfMemoryException

是的,你可以在更好的机器上计算,但你也做错了。不要使用每一个像素作为输入,导致这个庞大的架构。对完整的原始数据进行操作的方法通常采用非常小的缩小图像(并且有些图像类型无法在保留所有信息的情况下缩小到10x10)。

相反,做一些预处理,例如隔离图片的重要部分,消除噪声,更重要的是:提取特征,您将其提供给NN而不是原始数据。不要问我使用什么功能,因为这取决于你的问题。图像识别有数百种可能性。当神经网络在适当的特征上运行时,你会发现你不仅会有更小的层,而且精度会提高,因为网络永远不会看到不相关的数据,而是从一开始就开始对一些元数据进行操作。

相关文章:
  • 没有找到相关文章