3

我有一个网络,它有 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


4

1 回答 1

5

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

如果您在输出层使用线性激活函数,则不必再将输出目标值扩大到 0 和 1 之间。

关于层数……对于大多数问题,一个隐藏层通常就足够了,但它因问题而异,你只需要尝试不同的网络结构,看看哪种效果最好。

于 2012-09-21T19:13:35.160 回答