Dies ist ein PHP-Wrapper für die FANN-Bibliothek (Fast Artificial Neural Network).
Die API ist unter http://www.php.net/manual/en/book.fann.php dokumentiert, wo sich die vollständige Dokumentation für PHP FANN befindet.
Die API ist der offiziellen FANN C API sehr ähnlich. Lediglich Funktionen für feste fann_type
wurden nicht zugeordnet, da PHP immer float
unterstützt. Darüber hinaus wurden unnötige Argumente für einige Funktionen weggelassen (z. B. Array-Länge, die für PHP-Arrays nicht erforderlich ist).
Die Erweiterung kann unter Linux und Windows installiert werden.
Bevor Sie mit der Installation beginnen, stellen Sie sicher, dass libfann
auf Ihrem System installiert ist. Es ist Teil des Haupt-Repositorys in den meisten Linux-Distributionen (suchen Sie nach fann
). Wenn nicht, müssen Sie es zuerst installieren. Laden Sie es entweder von der offiziellen Website herunter oder holen Sie es sich aus Ihrem Distributions-Repository. Zum Beispiel auf Ubuntu:
$ sudo apt-get install libfann-dev
Die Fann-Installation kann übersprungen werden, wenn ein RPM für Fedora verwendet wird ( libfann
befindet sich in den Paketabhängigkeiten).
Wenn die Bibliothek manuell neu installiert wird, sollten vor der Neuinstallation alle alten Bibliotheksdateien entfernt werden, da andernfalls die alte Bibliotheksversion verknüpft werden könnte.
Das RPM-Paket für PHP FANN ist im Remi-Repository verfügbar: http://rpms.famillecollet.com/
Es ist für Fedora, RHEL und Klone (CentOS, SC und andere) verfügbar.
Nach dem Herunterladen von remi-release RPM kann das Paket durch Ausführen des folgenden Befehls installiert werden:
$ sudo yum --enablerepo=remi install php-pecl-fann
Diese Erweiterung ist auf PECL verfügbar. Die Installation ist sehr einfach. Führen Sie einfach Folgendes aus:
$ sudo pecl install fann
Es ist wichtig, ein Git installiert zu haben, da es für den rekursiven Abruf von PHPC erforderlich ist.
Klonen Sie zunächst rekursiv das Repository
git clone --recursive https://github.com/bukka/php-fann.git
Gehen Sie dann in das erstellte Quellverzeichnis und kompilieren Sie die Erweiterung. Sie müssen ein PHP-Entwicklungspaket installiert haben (Befehl phpize
muss verfügbar sein).
cd php-fann
phpize
./configure --with-fann
make
sudo make install
Wenn Sie die Erweiterung neu erstellen und eine Warnung zu einem Fehler bezüglich der Nichtübereinstimmung der Libtool-Version erhalten, versuchen Sie, phpize --clean
auszuführen. Wenn es nicht hilft, versuchen Sie es
aclocal && libtoolize --force && autoreconf
und führen Sie dann die Kompilierungsschritte erneut aus, beginnend mit phpize
.
Zum Schluss müssen Sie hinzufügen
extension=fann.so
zur php.ini
Vorkompilierte binäre dll
Bibliotheken für php-fann und libfann sind auf der PECL-fann-Seite verfügbar. Die kompilierte Version von libfann ist 2.2.
Es gibt drei Beispielprojekte: Logic Gates, OCR & Pathfinder.
Das einfache Beispiel trainiert ein einzelnes neuronales Netzwerk, um die XOR-Operation auszuführen.
simple_train.php
simple_train_epoch.php
simple_test.php
simple_merge.php
Das All-Beispiel trainiert 7 separate neuronale Netze, um die Operationen AND, NAND, NOR, NOT, OR, XNOR und XOR auszuführen.
train_all.php
test_all.php
OCR ist ein praktisches Beispiel für die optische Zeichenerkennung mit FANN. Obwohl dieses Beispiel begrenzt ist und Fehler enthält, können die von OCR veranschaulichten Konzepte auf ein robusteres gestapeltes Netzwerk angewendet werden, das Merkmalsextraktion und Faltungsschichten verwendet, um Text jeder Schriftart in Bildern jeder Größe zu erkennen.
train_ocr.php
test_ocr.php
Pathfinder ist ein Beispiel für ein neuronales Netzwerk, das in der Lage ist, einen 8-Richtungs-Schrittpfad von einer Startposition in einem 5x5-Raster zu einer Endposition in diesem Raster zu zeichnen. Um das Pathfinder-Beispiel einfach zu halten, ist es nicht darauf trainiert, mit Wänden oder nicht begehbarem Gelände umzugehen, es wäre jedoch sehr einfach, dies durch zusätzliches Training hinzuzufügen.
pathfinder_train.php
pathfinder_test.php