小编ali*_*aho的帖子

神经网络反向传播,训练中的错误

在阅读了一些关于神经网络(反向传播)的文章后,我尝试自己编写一个简单的神经网络.

我决定XOR神经网络,我的问题是当我试图训练网络时,如果我只使用一个例子来训练网络,那么就说1,1,0(作为input1,input2,targetOutput).500列车后+ - 网络回答0.05.但是,如果我尝试更多的一个例子(让我们说2个不同或所有4种可能性),网络的目标是0.5作为输出:(我在谷歌搜索我的错误没有结果:病了尽量给我尽可能多的细节帮助找到错误:

-ive尝试使用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];
Run Code Online (Sandbox Code Playgroud)

而'i'是当前图层,而权重是前一图层的所有权重.

- 最后一层(输出层)错误定义如下:

value*(1-value)*(targetvalue-value);
Run Code Online (Sandbox Code Playgroud)

而'value'是神经输出,'targetvalue'是当前神经元的目标输出.

- 其他神经元的错误定义为:

foreach neural in the nextlayer 
           sum+=neural.value*currentneural.weights[neural];
Run Code Online (Sandbox Code Playgroud)

- 所有网络中的权重都适应这个公式(来自神经的权重 - >神经2)

weight+=LearnRate*neural.myvalue*neural2.error;
Run Code Online (Sandbox Code Playgroud)

而LearnRate是纽约学习率(在我的网络中定义为0.25). - 每个神经元的偏重量由下式定义:

bias+=LearnRate*neural.myerror*neural.Bias;
Run Code Online (Sandbox Code Playgroud)

bias是const值= 1.

几乎所有我都可以详细说明,因为我说输出目标是0.5与不同的训练例子:(

非常感谢你的帮助^ _ ^.

c# backpropagation neural-network

6
推荐指数
1
解决办法
3043
查看次数

标签 统计

backpropagation ×1

c# ×1

neural-network ×1