我使用3层神经网络进行分类问题:1)~2k神经元2)~2k神经元3)20个神经元。我的训练集包含2个示例,每个示例中的大多数输入都是零。出于某种原因,在反向传播训练之后,网络为两个示例提供了几乎相同的输出(对于仅1个示例有效或对于输出具有1.0,其中示例之一具有1)。它是在第一个时代之后来到这个状态,并且之后变化不大,即使学习率是最小的双重谷。我使用sigmoid作为激活函数。 我认为我的代码可能有问题,所以我使用了AForge开源库,看起来它也遇到了同样的问题。 这可能是什么问题?
解决方案:我删除了一层,并将隐藏层中的神经元数量减少到800
答案 0 :(得分:3)
简化您的模型!
添加了:
还请更详细地描述您正在尝试做什么。你真的只有2个训练样例吗?这就像尝试使用400万维平面对2个点进行分类。这对我没有意义。
答案 1 :(得分:0)
您提到大多数输入为零。要减少搜索空间的大小,请尝试删除训练示例中的冗余。例如,如果
trainingExample[0].inputValue[i] == trainingExample[1].inputValue[i]
然后x.inputValue [i]没有NN的信息承载数据。
另外,也许不清楚,但似乎有两个训练样例看起来很小。