GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (1)   Поиск:  
 Автор Тема: Почему обучается не так?
Buggy
Сообщений: 28
Почему обучается не так?
Добавлено: 22 мар 07 12:58
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, во втором - второе больше всех, а в третьем - третье, все норма. А вот первое. Почему такое может быть?

[Ответ][Цитата]
 Стр.1 (1)