Нейронная сеть FANN — вопрос по коду, поясните почему такой результат происходит?
Не знаю нужен ли еще ответ или нет, код немного не верен
Вы на выходе ставите 1 нейрон, он Вам и ответ правильный дает
если на выход сделать 10 нейронов
$ann = fann_create_standard_array(3, array(2, 3, 10));
а в обучении сделать вот так:
for($i = 0; $i < 500000; $i++)
{
    if ($i % 100000 == 0) print "$i\n";
    fann_train($ann, array(25, 13), array(0, 0, 0, 0, 0, 0, 1, 0, 0, 0));
}
то на выходе получаете
print_r(fann_run($ann, array(25, 13)));
верный ответ в индексе 6 (цифра 7)
Восстание машин началось.
А если серьезно - нейронные сети основаны на вероятностях. Передавая данные один раз - шанс получить их обратно крайне мал.
Попробуйте прогнать fann_train в цикле, и убедитесь, что в таком случае результаты будут более верными:for($i=0;$i<500000;$i++) {
  fann_train(...);
}
А вообще, тут немного замешана философия. Почему 7 не может быть единицей?