2

我正在创建一个适用于彩色图像的神经网络。但是当我训练它时,错误将永远不会改变。即使经过一千次迭代。是什么原因造成的?或者我该怎么办?这是结构:

BasicNetwork network = new BasicNetwork();
        network.addLayer(new BasicLayer(null,true,16875));
        network.addLayer(new BasicLayer(new ActivationSigmoid(),true,(50)));
        network.addLayer(new BasicLayer(new ActivationSigmoid(),true,setUniqueNumbers.size()));
        network.getStructure().finalizeStructure();
        network.reset();

输入层实际上是 75 * 75(75x75 像素)*3(红、绿、蓝),所以我想出了 16875。

4

1 回答 1

4

当错误停止变化时,您已达到最小值,可能是局部最小值。

这意味着它已经找到了它认为迄今为止最好的解决方案,并且远离那个点会导致更多的错误(即使它必须先上山一点才能下山到更低的错误率)。当数据中没有很强的模式/相关性时,这种情况很早就发生了。当结构不正常时也会发生这种情况。

看起来这肯定是您的问题之一。大约 17,000 个输入神经元是一吨。然后 50 个隐藏的神经元似乎与这么多的输入不匹配。与其输入这么多数据,不如找到一种方法来提取特征以减小输入大小并使其对网络更有意义。

可以帮助它更好地运行的示例:

  • 将图像从 75*75 向下采样到 10*10。这取决于图片是什么。
  • 从 RGB 转换为灰度
  • 了解特征提取——如果你可以从图像中提取特征,比如线条、边缘等,网络将有更多的东西可以学习。说真的,特征提取是让 ANN 发挥作用的金票。

祝你好运!

于 2013-11-12T16:55:11.300 回答