神经网络训练。只有少数成果

时间:2012-09-21 11:44:16

标签: neural-network encog

我有一个网络,它有3个输入,2个隐藏层(每个6个神经元,Sigmoid激活函数)和一个神经元作为输出。我希望我的网络是连续的,因为我不是在看分类网络(希望这很有意义)。

我的输入表示一年中的天数(0-365范围)。我实际上将它们归一化到0-1范围(因为sigmoid)。

我的问题如下:无论训练错误多少,重新使用训练集时的实际值都不正确。根据我运行的时代数量,我会得到不同的结果。

如果我训练我的网络超过几千次,我只会得到两个可能的结果。如果我少训练它,我会得到更多可能的结果,但是这些值远远超出我的预期。

我已经读到,对于连续网络,最好使用两个隐藏层。

我不确定我做错了什么。如果你能得到任何帮助,那就太好了。如果您需要更多详细信息,请与我们联系。

由于

更新1

我减少了训练集中的元素数量。这次网络聚集在少数时代。以下是培训错误:


培训网络


迭代#1。错误:0.0011177179783950614

迭代#2。错误:0.14650660686728395

迭代#3。错误:0.0011177179783950614

迭代#4。错误:0.023927628368006597

迭代#5。错误:0.0011177179783950614

迭代#6。错误:0.0034446569367911364

迭代#7。错误:0.0011177179783950614

迭代#8。错误:8.800816244191594E-4


最终错误:0.0011177179783950614


1 个答案:

答案 0 :(得分:5)

您的输出神经元应该具有线性激活功能(而不是Sigmoid)。线性激活函数的输出只是所有输入的加权和。

如果在输出层使用线性激活功能,则不必再将0到1之间的输出目标值向外扩展。

关于层数...一个隐藏层通常足以解决大多数问题,但它会因问题而异,您只需尝试不同的网络结构,看看效果最好。