0

我正在训练我的神经网络对图像中的某些事物进行分类。我裁剪 40x40 像素的图像并将其分类为某个对象与否。所以它有 1600 个输入神经元、3 个隐藏层(500、200、30)和 1 个必须为 1 或 0 的输出神经元。我使用Flood库。

我不能用 训练它QuasiNewtonMethod,因为它在算法中使用了一个大矩阵,它不适合我的记忆。所以我使用GradientDescentand the ObjectiveFunctionalis NormalizedSquaredError

问题在于,通过训练它会溢出权重,并且神经网络的输出是INFNaN对于每个输入。

此外,我的数据集太大(CSV 格式时大约 800mb),我无法完全加载它。所以我InputTargetDataSets用 1000 个实例制作了许多实例,并将其保存为 XML(Flood的默认格式),并在每个随机打乱的数据集上训练一个 epoch。但是当我只在一个大数据集(10000 个实例)上训练它时,它也会溢出。

为什么会发生这种情况,我该如何防止这种情况发生?

4

1 回答 1

1

我建议对输入进行标准化。您还应该考虑,如果您有 1600 个神经元..输入层的输出将相加(如果是 sigmoid 神经元),可能会出现很多问题。

打印出一些步骤非常有用..例如它在哪一步溢出。

有一些关于神经元权重的提示。我会推荐非常小的<0.01。也许如果你能提供更多关于神经网络和输入间隔、权重等的信息。我可以给你一些其他的想法。

顺便说一句,我认为数学证明两层就足够了,所以如果你不使用一些模拟人眼的专门算法,就不需要三层隐藏层。

于 2012-09-03T11:02:48.110 回答