2016-07-07 85 views
0

我开发了一个ANN BP的代码来分类打鼾片段。我有10个输入功能和1个隐藏层,有10个神经元和一个输出神经元。我将1表示为无打鼾,0表示为打鼾部分。我有3000个网段,其中2500个是没有打鼾的网段,标记为1和500个打鼾网段,标记为0.我已经将数据集分为三组(70%的训练,15%的验证和15%的测试) 。人工神经网络后向传播测试

现在,在训练网络时,首先我洗牌训练集并将打鼾和无打鼾的段混合在一起。所以,在我训练了网络之后,当我验证它(仅通过前馈网络)时,我发现它只能对其中的一个进行分类。让我进一步澄清,假设在训练集中最后一个元素是没有打鼾(这是1)。所以,它为最后一次输出训练网络。然后在验证阶段,即使对于打鼾区段(它是0),它总是使输出接近1。如果最后一个元素是打鼾(0),则会发生同样的情况。然后它在验证阶段始终将输出接近于0。

我该如何解决这个问题?为什么我的网络不能记住先前段的输出。它只能保存最后一段?我应该在网络中改变什么来解决它?

回答

0

这是一个分类问题,所以我建议你有两个输出神经元。一个输出神经元是一个,如果片段是打鼾片段,另一个输出神经元是-1,如果它不是打鼾片段,反之亦然,对于没有打鼾的片段。这应该有助于网络对它们进行分类。您还应该将输入要素标准化到1到-1之间的范围。这将有助于神经网络更好地理解你的输入。你可能也想看看使用softmax图层作为你的输出。

您可能需要的另一件事是您可能需要向当前隐藏层添加另一个隐藏层或更多神经元。谢谢你@YuryEuceda这个建议。如果您还没有偏好输入,您可能还需要添加偏好输入。

+0

它应该与0和1一起工作,与-1和1相同,问题在于神经元和联会的数量在隐藏的laye河 –

0

我看到的问题是隐藏层中没有足够的神经元和sinapsis。请记住,直到现在还没有这样一种方法来精确计算隐藏层中的神经元数量,因此我们必须使用测试误差方法。有迹象表明,你可以在下一环节检查许多经验公式

https://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw

+0

嗨,谢谢你的回答。问题不在隐藏层中。这是因为我计算了每个时代的成本函数。它很好地降低了培训中的成本功能。问题在于记忆一个标签的先前权重(假设为0)。当其他标签假设(1)进入网络时,它忘记了前一层的权重。它没有找到一个最佳的权重来对它们进行分类。请让我知道如何解决它。 – Odrisso