我在前馈神经网络上有20个输出神经元,我已经已经尝试改变每个隐藏层的隐藏层数和神经元数。在测试时,我注意到虽然输出并不总是完全相同,但它们从测试用例到案例的变化很小,特别是在彼此方面。似乎在每个测试用例中输出几乎(在0.0005内,取决于初始权重)相同的输出;最高的那个总是最高的。有这个原因吗?
注意:我使用前馈神经网络,具有弹性和常见的反向传播,将训练/验证/测试与训练集之间的混乱分开。
更新:我使用网络将4个输入的模式分类为20种输出可能性中的一种。我有5000个训练集,800个验证集和1500个测试集。轮数可以根据我所做的不同而有所不同,在我目前的训练案例中,训练误差似乎收敛得太快(在20个时期内)。但是,我注意到在错误将在1000个时期内减少的其他时间出现这种非差异。我还调整了常规传播的学习率和动量。弹性传播不会使用学习速率或动量进行更新。这是使用Encog。
实现的答案 0 :(得分:2)
您的数据集开始时似乎有问题。 4个输入的20个输出似乎太多了。输出数量通常远小于输入数量。最有可能的是,要么数据集被错误地制定,要么你误解了你想要解决的问题。无论如何,关于你的其他评论的一些事情:
首先,您不使用1500个训练集,而是使用1500个训练模式。验证和测试也是如此。
其次,每次运行时输出不能完全相同,因为权重是随机初始化的,输出取决于它们。但是,我们希望它们在每次运行时都相似。如果它们不是,则意味着它们过于依赖随机初始化,因此网络将无法正常工作。
在您的情况下,最高输出是所选类别,因此如果每次网络运行良好时相同的输出最高。
答案 1 :(得分:0)
如果网络输出对于不同的输入模式几乎相同,则网络无法很好地对输入进行分类。
你说你的网络有4个输入节点和20个输出节点(对吗?)。因此有2 * 2 * 2 * 2 = 16种不同的可能输入模式。为什么你需要800套验证?
您的训练数据可能已损坏。