我有一个网络,它有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
答案 0 :(得分:5)
您的输出神经元应该具有线性激活功能(而不是Sigmoid)。线性激活函数的输出只是所有输入的加权和。
如果在输出层使用线性激活功能,则不必再将0到1之间的输出目标值向外扩展。
关于层数...一个隐藏层通常足以解决大多数问题,但它会因问题而异,您只需尝试不同的网络结构,看看效果最好。