我已经为ANN BP开发了一个代码来对鼾声片段进行分类。我有10个输入功能和1个隐藏层,有10个神经元和一个输出神经元。我表示1没有打鼾,0表示打鼾段。我有3000个片段,其中2500个没有打鼾段被标记为1.和500个打鼾段被标记为0.我已经将数据集分为三组(70%训练,15%验证和15%测试)
现在,在训练网络的同时,我首先将训练集拖垮,并将打鼾与没有打鼾的部分混合在一起。因此,在我训练网络之后,当我验证它时(仅通过前馈网络),我发现它只能对其中一个进行分类。让我进一步清楚,假设在训练集中最后一个元素是没有打鼾(这是1)。因此,它为最后一次输出训练了网络。然后在验证阶段,即使对于打鼾段(即0),它总是使输出接近1。如果最后一个元素是打鼾(0),则会发生同样的事情。然后它在验证阶段一直给出接近0的输出。
我该如何解决这个问题?为什么我的网络无法记住以前段的输出。它只保存最后一段?我应该在网络中改变什么来解决它?
答案 0 :(得分:0)
这是一个分类问题所以我建议你有两个输出神经元。如果片段是打鼾片段,则一个输出神经元是1,如果不是打鼾片段,则另一个输出神经元是-1,而对于没有打鼾的片段,反之亦然。这应该有助于网络对它们进行分类。您还应该将输入要素标准化为1到-1之间的范围。这将有助于神经网络更好地理解您的输入。您可能还想查看使用softmax图层作为输出。
您可能需要的另一件事是您可能需要在当前隐藏层中添加另一个隐藏层或更多神经元。谢谢你@YuryEuceda的建议。如果您还没有偏置输入,则可能还需要添加偏置输入。
答案 1 :(得分:0)
我看到的问题是隐藏层中没有足够的神经元和芥子气。请记住,到目前为止还没有这种方法来准确计算隐藏层中神经元的数量,因此我们必须使用测试错误方法。您可以在下一个链接中查看许多经验公式
答案 2 :(得分:0)