【问题标题】:Overflowing of neural network weights in training训练中神经网络权重的溢出
【发布时间】:2013-07-29 23:20:59
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: machine-learning overflow neural-network


    【解决方案1】:

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

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

    有一些关于神经元权重的提示。我会推荐非常小的

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

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 2010-11-20
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多