Il s'agit d'un wrapper PHP pour la bibliothèque FANN (Fast Artificial Neural Network).
L'API est documentée sur http://www.php.net/manual/en/book.fann.php où se trouve la documentation complète de PHP FANN.
L'API est très similaire à l'API officielle FANN C. Seules les fonctions pour fann_type
fixe n'ont pas été mappées car PHP prend toujours en charge float
. De plus, les arguments inutiles pour certaines fonctions ont été omis (par exemple la longueur du tableau qui n'est pas nécessaire pour les tableaux PHP).
L'extension peut être installée sur Linux et Windows.
Avant de commencer l'installation, assurez-vous que libfann
est installé sur votre système. Il fait partie du référentiel principal de la plupart des distributions Linux (recherchez fann
). Sinon, vous devez d'abord l'installer. Téléchargez-le depuis le site officiel ou récupérez-le depuis votre référentiel de distribution. Par exemple sur Ubuntu :
$ sudo apt-get install libfann-dev
L'installation de Fann peut être ignorée si un RPM pour Fedora est utilisé ( libfann
est dans les dépendances du package).
Si la bibliothèque est réinstallée manuellement, tous les anciens fichiers de bibliothèque doivent être supprimés avant la réinstallation, sinon l'ancienne version de la bibliothèque pourrait être liée.
Le package RPM pour PHP FANN est disponible dans le dépôt de Rémi : http://rpms.famillecollet.com/
Il est disponible pour Fedora, RHEL et les clones (CentOS, SC et autres).
Après avoir téléchargé la version remi de RPM, le package peut être installé en exécutant la commande suivante :
$ sudo yum --enablerepo=remi install php-pecl-fann
Cette extension est disponible sur PECL. L'installation est très simple. Exécutez simplement :
$ sudo pecl install fann
Il est important d'avoir un git installé car il est nécessaire pour la récupération récursive de PHPC.
Cloner d'abord récursivement le référentiel
git clone --recursive https://github.com/bukka/php-fann.git
Accédez ensuite au répertoire source créé et compilez l’extension. Vous devez avoir installé un package de développement php (la commande phpize
doit être disponible).
cd php-fann
phpize
./configure --with-fann
make
sudo make install
Si vous reconstruisez l'extension et voyez un avertissement concernant l'erreur de non-concordance de version de Libtool, essayez d'exécuter phpize --clean
ou si cela ne vous aide pas, essayez
aclocal && libtoolize --force && autoreconf
puis exécutez à nouveau les étapes de compilation en commençant par phpize
.
Enfin, vous devez ajouter
extension=fann.so
vers le php.ini
Les bibliothèques dll
binaires précompilées pour php-fann et libfann sont disponibles sur la page PECL fann. La version compilée de libfann est la 2.2.
Il existe trois exemples de projets : Logic Gates, OCR et Pathfinder.
L'exemple simple entraîne un seul réseau neuronal pour effectuer l'opération XOR.
simple_train.php
simple_train_epoch.php
simple_test.php
simple_merge.php
L'exemple All entraîne 7 réseaux de neurones séparés pour effectuer les opérations AND, NAND, NOR, NOT, OR, XNOR et XOR.
train_all.php
test_all.php
L'OCR est un exemple pratique de reconnaissance optique de caractères utilisant FANN. Bien que cet exemple soit limité et comporte des erreurs, les concepts illustrés par l'OCR peuvent être appliqués à un réseau empilé plus robuste qui utilise des couches d'extraction de fonctionnalités et de convolution pour reconnaître le texte de n'importe quelle police dans n'importe quelle taille d'image.
train_ocr.php
test_ocr.php
Pathfinder est un exemple de réseau neuronal capable de tracer un chemin dans 8 directions depuis une position de départ dans une grille 5x5 jusqu'à une position finale dans cette grille. Pour garder l'exemple de Pathfinder simple, il n'est pas formé pour gérer les murs ou les terrains non traversables, mais il serait très facile de l'ajouter en ajoutant une formation supplémentaire.
pathfinder_train.php
pathfinder_test.php