neural-network - 神经网络训练。只有很少的结果

标签 neural-network encog

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

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

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

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

我读过,对于连续网络,最好也使用两个隐藏层。

我不确定我做错了什么。如果你能提供任何帮助,那就太好了。如果您需要更多详细信息,请告诉我。

谢谢

更新 1

我减少了训练集中的元素数量。这次网络在少量的 epoch 中收敛。以下是训练错误:


训练网络


迭代 #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


最佳答案

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

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

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

关于neural-network - 神经网络训练。只有很少的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12529893/

相关文章:

swift3 - 有没有使用swift for ios实现神经网络?

matrix - PyTorch - nn.Linear 权重的形状

java - 经过训练的神经网络对所有评估行输出相同的结果

java - Encog 输入层大小限制

neural-network - 卷积神经网络 : How many pixels will be covered by each of the filters?

machine-learning - 人工神经网络 RELU 激活函数和梯度

python - XOR 的 Tensorflow 在 500 个时期后无法正确预测

java - 如何在 Java 中使用 Encog SVM 预测多个值

.net - 有没有一种方法可以训练 Encog 神经网络而不将所有训练集加载到内存中?

Encog One Of - 解码