PHP FANN wrapper
This is a PHP wrapper for FANN (Fast Artificial Neural Network) library.
The API is documented on http://www.php.net/manual/en/book.fann.php where is the complete documentation for PHP FANN.
The API is very similar to the official FANN C API. Just functions for fixed
fann_type have not been mapped because PHP always support
float. In addition unnecessary arguments for some functions have been left out (for example array length that is not necessary for PHP arrays).
The extension can be installed on Linux and Windows.
Before you start installation make sure that
libfann is installed on your system. It's part of the main repository in the most Linux distributions (search for
fann). If not you need to install it first. Either download it from the official site or get it from your distro repository. For example on Ubuntu:
$ sudo apt-get install libfann-dev
Fann installation can be skipped if an RPM for Fedora is used (
libfann is in the package dependencies).
If the library is re-installed manually, then all old library file should be removed before re-installing otherwise the old library version could be linked.
The RPM package for PHP FANN is available in Remi's repository: http://rpms.famillecollet.com/
It is available for Fedora, RHEL and clones (CentOS, SC and others).
After downloading remi-release RPM, the package can be installed by executing following command:
$ sudo yum --enablerepo=remi install php-pecl-fann
This extension is available on PECL. The installation is very simple. Just run:
$ sudo pecl install fann
It's important to have a git installed as it's necessary for recursive fetch of phpc.
First clone recursively the repository
git clone --recursive https://github.com/bukka/php-fann.git
Then go to the created source directory and compile the extension. You need to have a php development package installed (command
phpize must be available).
cd php-fann phpize ./configure --with-fann make sudo make install
If you are rebuilding the extension and see warning about Libtool version mismatch error, try to run
phpize --clean or if it doesn't help, try
aclocal && libtoolize --force && autoreconf
and then run the compilation steps starting with
Finally you need to add
to the php.ini
dll libraries for php-fann and libfann are available on the PECL fann page. The compiled version of libfann is 2.2.
The Simple example trains a single neural network to perform the XOR operation.
The All example trains 7 seperate neural networks to perform the AND, NAND, NOR, NOT, OR, XNOR & XOR operations.
OCR is a practical example of Optical Character Recognition using FANN. While this example is limited and does make mistakes, the concepts illustrated by OCR can be applied to a more robust stacked network that uses feature extraction and convolution layers to recognize text of any font in any size image.
Pathfinder is an example of a neural network that is capable of plotting an 8 direction step path from a starting position in a 5x5 grid to an ending position in that grid. To keep the Pathfinder example simple it is not trained to deal with walls or non-traversable terrain however it would be very easy to add that by adding additional training.