int iterations = 0;
double sch = 5.0;
double x = 0.0;
double y = 0.0;
assignRandomWeights();
while(1)
{
x = 0.0;
y = 0.0;
while(1)
{
inputs[0] = x;
inputs[1] = y;
y += 1.0;
if(y > sch)
{
x += 1.0;
y = 0.0;
}
if(x > sch) break;
target[0] = 1.0;
target[1] = 0.0;
target[2] = 0.0;
target[3] = 0.0;
feedForward();
backPropagate();
}
x = sch + 1;
y = 0.0;
while(1)
{
inputs[0] = x;
inputs[1] = y;
y += 1.0;
if(y > sch)
{
x += 1.0;
y = 0.0;
}
if(x > (sch + sch + 1)) break;
target[0] = 0.0;
target[1] = 1.0;
target[2] = 0.0;
target[3] = 0.0;
feedForward();
backPropagate();
}
x = sch + sch + 2;
y = 0.0;
while(1)
{
inputs[0] = x;
inputs[1] = y;
y += 1.0;
if(y > sch)
{
x += 1.0;
y = 0.0;
}
if(x > (sch + sch + sch + 2)) break;
target[0] = 0.0;
target[1] = 0.0;
target[2] = 1.0;
target[3] = 0.0;
feedForward();
backPropagate();
}
if(iterations++ > 300000) break;
}
char t[100];
inputs[0] = 1.0;
inputs[1] = 2.0;
feedForward();
sprintf(t, "1) %f %f %f %f", actual[0], actual[1], actual[2], actual[3]);
MessageBox(NULL,t, NULL, 0);
inputs[0] = 7.0;
inputs[1] = 3.0;
feedForward();
sprintf(t, "2) %f %f %f %f", actual[0], actual[1], actual[2], actual[3]);
MessageBox(NULL,t, NULL, 0);
inputs[0] = 14.0;
inputs[1] = 4.0;
feedForward();
sprintf(t, "3) %f %f %f %f", actual[0], actual[1], actual[2], actual[3]);
MessageBox(NULL,t, NULL, 0);
Запускаю, всё работает на отлично, но проблема вот в чём:
1) 0.126043 0.888372 0.000399 0.000037 <-- Здесь первый элемент должен был быть больше всех, а оказался второй
А во всех остальных идет всё нормально, как надо, на втором MessageBox второй больше всех, на третьем - третий.
В чем может быть проблема?