【发布时间】:2011-11-20 16:40:47
【问题描述】:
在阅读了一些关于神经网络(反向传播)的文章后,我尝试自己编写一个简单的神经网络。
我决定了 XOR 神经网络, 我的问题是当我尝试训练网络时, 如果我只使用一个示例来训练网络,可以说 1,1,0(作为输入 1,输入 2,目标输出)。 经过 500 次火车 +- 网络回答 0.05。 但是如果我尝试了一个以上的例子(让我们说 2 种不同的或所有 4 种可能性),网络的目标是 0.5 作为输出:( 我在谷歌搜索我的错误没有结果:S 我会尽力提供尽可能多的细节来帮助找出问题所在:
-我尝试了具有 2,2,1 和 2,4,1 的网络(输入层、隐藏层、输出层)。
-由以下定义的每个神经元的输出:
double input = 0.0;
for (int n = 0; n < layers[i].Count; n++)
input += layers[i][n].Output * weights[n];
而“i”是当前层,权重是前一层的所有权重。
-最后一层(输出层)错误定义为:
value*(1-value)*(targetvalue-value);
而 'value' 是神经输出,而 'targetvalue' 是当前神经的目标输出。
-其他神经元的误差定义为:
foreach neural in the nextlayer
sum+=neural.value*currentneural.weights[neural];
-网络中的所有权重都由这个公式适应(神经网络的权重 -> 神经网络 2)
weight+=LearnRate*neural.myvalue*neural2.error;
而 LearnRate 是网络学习率(在我的网络中定义为 0.25)。 - 每个神经元的偏差权重定义为:
bias+=LearnRate*neural.myerror*neural.Bias;
偏差是 const value=1。
我能详细说明的, 正如我所说,输出的目标是 0.5,不同的训练示例:(
非常感谢您的帮助^_^。
【问题讨论】:
-
您是自己编写实现还是使用框架?
-
被保护后居然回答不了他的问题,真是好笑:)
标签: c# neural-network backpropagation