Este é um wrapper PHP para a biblioteca FANN (Fast Artificial Neural Network).
A API está documentada em http://www.php.net/manual/en/book.fann.php onde está a documentação completa do PHP FANN.
A API é muito semelhante à API C oficial da FANN. Apenas funções para fann_type
fixo não foram mapeadas porque o PHP sempre suporta float
. Além disso, argumentos desnecessários para algumas funções foram deixados de fora (por exemplo, comprimento de array que não é necessário para arrays PHP).
A extensão pode ser instalada em Linux e Windows.
Antes de iniciar a instalação, certifique-se de que libfann
esteja instalada em seu sistema. Faz parte do repositório principal na maioria das distribuições Linux (pesquise fann
). Caso contrário, você precisa instalá-lo primeiro. Faça o download no site oficial ou obtenha-o no repositório da sua distribuição. Por exemplo no Ubuntu:
$ sudo apt-get install libfann-dev
A instalação do Fann pode ser ignorada se um RPM para Fedora for usado ( libfann
está nas dependências do pacote).
Se a biblioteca for reinstalada manualmente, todos os arquivos antigos da biblioteca deverão ser removidos antes da reinstalação, caso contrário, a versão antiga da biblioteca poderá ser vinculada.
O pacote RPM para PHP FANN está disponível no repositório do Remi: http://rpms.famillecollet.com/
Está disponível para Fedora, RHEL e clones (CentOS, SC e outros).
Depois de baixar o RPM remi-release, o pacote pode ser instalado executando o seguinte comando:
$ sudo yum --enablerepo=remi install php-pecl-fann
Esta extensão está disponível no PECL. A instalação é muito simples. Basta executar:
$ sudo pecl install fann
É importante ter um git instalado, pois é necessário para a busca recursiva do PHPC.
Primeiro clone recursivamente o repositório
git clone --recursive https://github.com/bukka/php-fann.git
Em seguida, vá para o diretório de origem criado e compile a extensão. Você precisa ter um pacote de desenvolvimento php instalado (o comando phpize
deve estar disponível).
cd php-fann
phpize
./configure --with-fann
make
sudo make install
Se você estiver reconstruindo a extensão e vir um aviso sobre erro de incompatibilidade de versão do Libtool, tente executar phpize --clean
ou se não ajudar, tente
aclocal && libtoolize --force && autoreconf
e então execute as etapas de compilação começando com phpize
novamente.
Finalmente você precisa adicionar
extension=fann.so
para o php.ini
Bibliotecas dll
binárias pré-compiladas para php-fann e libfann estão disponíveis na página PECL fann. A versão compilada do libfann é 2.2.
Existem três projetos de exemplo: Logic Gates, OCR e Pathfinder.
O exemplo Simples treina uma única rede neural para realizar a operação XOR.
simple_train.php
simple_train_época.php
teste_simples.php
simple_merge.php
O exemplo All treina 7 redes neurais separadas para realizar as operações AND, NAND, NOR, NOT, OR, XNOR e XOR.
treinar_tudo.php
teste_tudo.php
OCR é um exemplo prático de reconhecimento óptico de caracteres usando FANN. Embora este exemplo seja limitado e cometa erros, os conceitos ilustrados pelo OCR podem ser aplicados a uma rede empilhada mais robusta que usa extração de recursos e camadas de convolução para reconhecer texto de qualquer fonte em imagens de qualquer tamanho.
train_ocr.php
test_ocr.php
Pathfinder é um exemplo de rede neural capaz de traçar um caminho passo a passo de 8 direções de uma posição inicial em uma grade 5x5 até uma posição final nessa grade. Para manter o exemplo do Pathfinder simples, ele não é treinado para lidar com paredes ou terrenos não transponíveis, no entanto, seria muito fácil adicionar isso adicionando treinamento adicional.
pathfinder_train.php
pathfinder_test.php