이것은 FANN(Fast Artificial Neural Network) 라이브러리용 PHP 래퍼입니다.
API는 http://www.php.net/manual/en/book.fann.php에 문서화되어 있으며 여기에는 PHP FANN에 대한 전체 문서가 있습니다.
API는 공식 FANN C API와 매우 유사합니다. PHP는 항상 float
지원하기 때문에 고정된 fann_type
에 대한 함수는 매핑되지 않았습니다. 또한 일부 함수에 대한 불필요한 인수가 생략되었습니다(예: PHP 배열에 필요하지 않은 배열 길이).
확장은 Linux 및 Windows에 설치할 수 있습니다.
설치를 시작하기 전에 libfann
이 시스템에 설치되어 있는지 확인하십시오. 이는 대부분의 Linux 배포판에서 기본 저장소의 일부입니다( fann
검색). 그렇지 않은 경우 먼저 설치해야 합니다. 공식 사이트에서 다운로드하거나 distro 저장소에서 다운로드하세요. 예를 들어 Ubuntu의 경우:
$ sudo apt-get install libfann-dev
Fedora용 RPM을 사용하는 경우 Fann 설치를 건너뛸 수 있습니다( libfann
패키지 종속성에 있음).
라이브러리를 수동으로 다시 설치하는 경우 다시 설치하기 전에 이전 라이브러리 파일을 모두 제거해야 합니다. 그렇지 않으면 이전 라이브러리 버전이 링크될 수 있습니다.
PHP FANN용 RPM 패키지는 Remi 저장소(http://rpms.famillecollet.com/)에서 사용할 수 있습니다.
Fedora, RHEL 및 클론(CentOS, SC 및 기타)에서 사용할 수 있습니다.
remi-release RPM을 다운로드한 후 다음 명령을 실행하여 패키지를 설치할 수 있습니다.
$ sudo yum --enablerepo=remi install php-pecl-fann
이 확장은 PECL에서 사용할 수 있습니다. 설치는 매우 간단합니다. 그냥 실행하세요:
$ sudo pecl install fann
phpc를 재귀적으로 가져오는 데 필요하므로 git을 설치하는 것이 중요합니다.
먼저 저장소를 재귀적으로 복제합니다.
git clone --recursive https://github.com/bukka/php-fann.git
그런 다음 생성된 소스 디렉터리로 이동하여 확장을 컴파일합니다. PHP 개발 패키지가 설치되어 있어야 합니다( phpize
명령을 사용할 수 있어야 함).
cd php-fann
phpize
./configure --with-fann
make
sudo make install
확장 기능을 다시 빌드하는 중 Libtool 버전 불일치 오류에 대한 경고가 표시되면 phpize --clean
실행해 보고, 도움이 되지 않으면 시도해 보세요.
aclocal && libtoolize --force && autoreconf
그런 다음 phpize
로 시작하는 컴파일 단계를 다시 실행하세요.
마지막으로 추가해야 할 사항
extension=fann.so
php.ini에
php-fann 및 libfann용 사전 컴파일된 바이너리 dll
라이브러리는 PECL fann 페이지에서 사용할 수 있습니다. libfann의 컴파일된 버전은 2.2입니다.
세 가지 예제 프로젝트가 있습니다: Logic Gates, OCR 및 Pathfinder.
간단한 예에서는 단일 신경망을 훈련하여 XOR 연산을 수행합니다.
simple_train.php
simple_train_epoch.php
simple_test.php
simple_merge.php
All 예제는 AND, NAND, NOR, NOT, OR, XNOR 및 XOR 연산을 수행하기 위해 7개의 별도 신경망을 훈련합니다.
train_all.php
test_all.php
OCR은 FANN을 이용한 광학 문자 인식의 실제적인 예입니다. 이 예는 제한적이고 실수를 범하지만 OCR에서 설명하는 개념은 특징 추출 및 컨볼루션 레이어를 사용하여 모든 크기의 이미지에서 모든 글꼴의 텍스트를 인식하는 보다 강력한 스택형 네트워크에 적용될 수 있습니다.
train_ocr.php
test_ocr.php
Pathfinder는 5x5 그리드의 시작 위치에서 해당 그리드의 종료 위치까지 8방향 단계 경로를 그릴 수 있는 신경망의 예입니다. Pathfinder 예제를 단순하게 유지하기 위해 벽이나 이동할 수 없는 지형을 처리하도록 훈련되지 않았습니다. 그러나 추가 훈련을 추가하여 이를 추가하는 것은 매우 쉽습니다.
pathfinder_train.php
pathfinder_test.php