1
我正在尝试使用德尔塔培训规则来训练感知器的与布尔函数。但即使在收敛之后,它错误地将输入分类(实际上是1个输入)。你能告诉我在哪里,我错了:http://ideone.com/CDgTQE感知器培训的三角洲培训规则
这是用来训练功能:
public void trianWithDelta(Example[] examples){
for(int i=0;i<1000;++i){
dw1 = 0;
dw2 = 0;
for(Example ex:examples){
double o = computeOutput(ex);
double t = ex.o;
dw1 = dw1 + n*(t-o)*ex.x1;
dw2 = dw2 + n*(t-o)*ex.x2;
}
w1 += dw1;
w2 += dw2;
}
}
的训练实例(布尔AND):
Example[] examples = new Example[]{
new Example(-1, -1, -1),
new Example(-1 , 1, -1),
new Example(1, -1, -1),
new Example(1, 1, 1)
};
结果: W1:0.49999999999999994 w2:0.5000000000000002
使用培训后的培训示例进行测试:
-1
1(不正确)
-1