【问题标题】:OverflowException or OutOfMemoryException when constructing a huge neural network in Encog在 Encog 中构建巨大的神经网络时出现 OverflowException 或 OutOfMemoryException
【发布时间】:2015-07-16 13:01:43
【问题描述】:

我正在尝试在 C# 中的 Encog 中构建一个用于 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();

我从 encog-core-cs.dll 得到一个 System.OverflowException,如果我将两个地方的神经元计数加倍到 120 000,我得到一个 System.OutOfMemoryException时间>。对于 Encog 来说,这只是一个太大的网络,还是我做错了什么?但是如果这太大了,我怎样才能使用一个合理大小的图像进行训练,比如 200×200?我注定要小图吗?

【问题讨论】:

  • 以 64 位运行,因此您可以寻址更多内存。
  • @BrandonSeydel 遗憾的是,我有一个 32 位操作系统,所以我认为这不是一个选项。
  • @BrandonSeydel 但我刚刚让我的朋友在 64 位(也符合 x64)上试用它,但没有用。

标签: c# neural-network encog


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-11-19
    • 2012-10-18
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多