Это PHP-оболочка для библиотеки FANN (быстрая искусственная нейронная сеть).
API документирован по адресу http://www.php.net/manual/en/book.fann.php, где находится полная документация по PHP FANN.
API очень похож на официальный API FANN C. Просто функции для фиксированного fann_type
не были сопоставлены, поскольку PHP всегда поддерживает float
. Кроме того, для некоторых функций были исключены ненужные аргументы (например, длина массива, которая не требуется для массивов PHP).
Расширение можно установить в Linux и Windows.
Прежде чем начать установку, убедитесь, что в вашей системе установлен libfann
. Это часть основного репозитория большинства дистрибутивов Linux (найдите fann
). Если нет, вам нужно сначала установить его. Загрузите его с официального сайта или получите из репозитория дистрибутива. Например, в Ubuntu:
$ sudo apt-get install libfann-dev
Установку Fann можно пропустить, если используется RPM для Fedora ( libfann
находится в зависимостях пакета).
Если библиотека переустанавливается вручную, все старые файлы библиотеки следует удалить перед повторной установкой, иначе старая версия библиотеки может быть связана.
Пакет RPM для PHP FANN доступен в репозитории Remi: http://rpms.famillecollet.com/
Он доступен для Fedora, RHEL и клонов (CentOS, SC и других).
После загрузки обновленного RPM пакет можно установить, выполнив следующую команду:
$ sudo yum --enablerepo=remi install php-pecl-fann
Это расширение доступно на PECL. Установка очень проста. Просто запустите:
$ sudo pecl install fann
Важно иметь установленный git, поскольку он необходим для рекурсивной выборки phpc.
Сначала рекурсивно клонируйте репозиторий
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
Предварительно скомпилированные двоичные библиотеки dll
для php-fann и libfann доступны на странице PECL fann. Скомпилированная версия libfann — 2.2.
Есть три примера проекта: Logic Gates, OCR и Pathfinder.
Простой пример обучает одну нейронную сеть выполнению операции XOR.
simple_train.php
simple_train_epoch.php
simple_test.php
simple_merge.php
В примере «Все» 7 отдельных нейронных сетей обучаются выполнению операций «И», «И-НЕ», «НИ», «НЕ», «ИЛИ», «ИСКЛЮЧАЮЩЕЕ ИЛИ» и «ИСКЛЮЧАЮЩЕЕ ИЛИ».
train_all.php
test_all.php
OCR — это практический пример оптического распознавания символов с использованием FANN. Хотя этот пример ограничен и содержит ошибки, концепции, проиллюстрированные оптическим распознаванием текста, могут быть применены к более надежной многоуровневой сети, которая использует слои извлечения признаков и свертки для распознавания текста любого шрифта в изображении любого размера.
train_ocr.php
test_ocr.php
Pathfinder — это пример нейронной сети, которая способна прокладывать путь шагов в 8 направлениях от начальной позиции в сетке 5x5 до конечной позиции в этой сетке. Для простоты примера Pathfinder он не обучен работе со стенами или непроходимой местностью, однако было бы очень легко добавить это, добавив дополнительное обучение.
pathfinder_train.php
pathfinder_test.php