Jakby ktoś przez przypadek zaczął użytkować tą bibliotekę i przez przypadek miał takie same problemy tak jak ja
to jest na to rozwiązanie:
wystarczy zamiast
#include "floatfann.h"
dać
#include "doublefann.h"
w ten sposób wreszcie uzyskamy poprawne lecz zbliżone dane wyjściowe.
Np:
input a=1 and a=-1 => 0.9564
input a=1 and a=1 => -0.9564
Sieć neuronowa wyprodukowała poprawne choć nie idealne wyniki.
Jeżeli chcemy uzyskać wyniki takie same jak we wzorcu to należy manipulować wartością błędu oczekiwanego tj.:
desired_error
Normalnie jest tak, że im wartość błędu oczekiwanego jest bliższa zeru tym wyniki są dokładniejsze.
tak więc, należy defaultowe
const float desired_error = (const float) 0.001;
zamienić na:
const double desired_error = (const double) 0;
Zmieniłem również typ danych, choć na typie float również wszystko działa bez zarzutu.
To tak dla estetyki.
Nwm dlaczego w sekcji getting started na ich oficjalnej stronie są takie krzaczki. Zasugerowałem im by to zmienili. Co z tym zrobią... średnio mnie to obchodzi, choć warto zauważyć, że nie tylko ja miałem takie problemy. To bardzo źle o nich świadczy, tym bardziej, że biblioteka ma być podobno łatwa w obsłudze.
No nic...
W miarę postępów w nauce zamierzam przygotować kilka tutoriali zarówno z teorii jaki w samej praktyki w fann. Motywacją jest kiepski dostęp do takich materiałów w języku polskim a jeśli już to są one mocno przestarzałe.