Este es un contenedor PHP para la biblioteca FANN (Fast Artificial Neural Network).
La API está documentada en http://www.php.net/manual/en/book.fann.php donde está la documentación completa para PHP FANN.
La API es muy similar a la API oficial de FANN C. Solo las funciones para fann_type
fijo no se han asignado porque PHP siempre admite float
. Además, se han omitido argumentos innecesarios para algunas funciones (por ejemplo, la longitud de la matriz que no es necesaria para las matrices PHP).
La extensión se puede instalar en Linux y Windows.
Antes de comenzar la instalación, asegúrese de que libfann
esté instalado en su sistema. Es parte del repositorio principal en la mayoría de las distribuciones de Linux (busque fann
). Si no es así, primero deberá instalarlo. Descárgalo del sitio oficial o consíguelo del repositorio de tu distribución. Por ejemplo en Ubuntu:
$ sudo apt-get install libfann-dev
La instalación de Fann se puede omitir si se usa un RPM para Fedora ( libfann
está en las dependencias del paquete).
Si la biblioteca se reinstala manualmente, todos los archivos antiguos de la biblioteca deben eliminarse antes de volver a instalarla, de lo contrario, se podría vincular la versión anterior de la biblioteca.
El paquete RPM para PHP FANN está disponible en el repositorio de Remi: http://rpms.famillecollet.com/
Está disponible para Fedora, RHEL y clones (CentOS, SC y otros).
Después de descargar RPM de versión remi, el paquete se puede instalar ejecutando el siguiente comando:
$ sudo yum --enablerepo=remi install php-pecl-fann
Esta extensión está disponible en PECL. La instalación es muy sencilla. Simplemente ejecuta:
$ sudo pecl install fann
Es importante tener instalado un git, ya que es necesario para la recuperación recursiva de phpc.
Primero clona recursivamente el repositorio.
git clone --recursive https://github.com/bukka/php-fann.git
Luego vaya al directorio fuente creado y compile la extensión. Necesita tener instalado un paquete de desarrollo php (el comando phpize
debe estar disponible).
cd php-fann
phpize
./configure --with-fann
make
sudo make install
Si está reconstruyendo la extensión y ve una advertencia sobre el error de no coincidencia de versiones de Libtool, intente ejecutar phpize --clean
o, si no ayuda, intente
aclocal && libtoolize --force && autoreconf
y luego ejecute los pasos de compilación comenzando con phpize
nuevamente.
Finalmente necesitas agregar
extension=fann.so
al php.ini
Las bibliotecas dll
binarias precompiladas para php-fann y libfann están disponibles en la página de PECL fann. La versión compilada de libfann es 2.2.
Hay tres proyectos de ejemplo: Logic Gates, OCR y Pathfinder.
El ejemplo simple entrena una única red neuronal para realizar la operación XOR.
tren_simple.php
simple_train_epoch.php
prueba_simple.php
simple_merge.php
El ejemplo Todo entrena 7 redes neuronales separadas para realizar las operaciones AND, NAND, NOR, NOT, OR, XNOR y XOR.
tren_todo.php
prueba_todos.php
OCR es un ejemplo práctico de reconocimiento óptico de caracteres utilizando FANN. Si bien este ejemplo es limitado y comete errores, los conceptos ilustrados por OCR se pueden aplicar a una red apilada más robusta que utiliza extracción de características y capas de convolución para reconocer texto de cualquier fuente en imágenes de cualquier tamaño.
tren_ocr.php
prueba_ocr.php
Pathfinder es un ejemplo de una red neuronal que es capaz de trazar una ruta de pasos de 8 direcciones desde una posición inicial en una cuadrícula de 5x5 hasta una posición final en esa cuadrícula. Para mantener simple el ejemplo de Pathfinder, no está entrenado para lidiar con paredes o terrenos no transitables; sin embargo, sería muy fácil agregarlo agregando entrenamiento adicional.
pathfinder_train.php
pathfinder_test.php