2

我在前馈神经网络上有 20 个输出神经元,为此我已经尝试过改变隐藏层的数量和每个隐藏层的神经元数量。在测试时,我注意到虽然输出并不总是完全相同,但它们因测试用例而异,尤其是在彼此之间。它似乎在每个测试用例上输出几乎(在 0.0005 内,取决于初始权重)相同的输出;最高的永远是最高的。是否有一个原因?

注意:我使用的是前馈神经网络,具有弹性和常见的反向传播,分离训练/验证/测试和训练集之间的改组。

更新:我正在使用网络将 4 个输入的模式分类为 20 个输出可能性之一。我有 5000 个训练集、800 个验证集和 1500 个测试集。轮数可能因我正在做的事情而异,在我当前的训练案例中,训练错误似乎收敛得太快(低于 20 个 epoch)。但是,我注意到在其他时间误差会在 1000 个时期内减少时这种非方差。我还调整了常规传播的学习率和动量。弹性传播不使用学习率或动量进行更新。这是使用 Encog 实现的。

4

2 回答 2

2

您的数据集似乎一开始就有问题。4 个输入的 20 个输出似乎太多了。输出的数量通常远小于输入的数量。最有可能的是,数据集的表述有误,或者您误解了您要解决的问题中的某些内容。无论如何,关于您的其他评论的一些事情:

首先,您不使用 1500 个训练集,而是使用 1500 个训练模式的一组。验证和测试也是如此。

其次,每次运行的输出不可能完全相同,因为权重是随机初始化的,并且输出取决于它们。但是,我们希望它们在每次运行时都相似。如果不是,则意味着它们过于依赖随机初始化,因此网络无法正常工作。

在您的情况下,最高输出是所选类别,因此如果每次您的网络运行良好时相同的输出是最高的。

于 2014-06-23T10:39:40.087 回答
0

如果不同输入模式的网络输出几乎相同,则网络无法很好地对输入进行分类。

你说你的网络有 4 个输入节点和 20 个输出节点(对吗?)。所以有 2*2*2*2 = 16 种不同的可能输入模式。为什么你需要 800 个验证集?

您的训练数据可能已损坏。

于 2014-06-21T10:03:31.503 回答