Как стать автором
Обновить

Установка нейронной сети FANN в Linux

Время на прочтение4 мин
Количество просмотров13K
Устанавливать библиотеку Fast Artificial Neural Network будем на операционную систему Debian (один из дистрибутивов Linux). Произвести установку библиотеки можно двумя способами.

  1. установка из репозиториев;
  2. установка всех элементов в отдельности.

Первый метод конечно облегчает немного установку, но это того не стоит. Вот с чем мне собственно пришлось столкнуться. Когда мне понадобилось произвести установку на Debian. Я нашел руководство по установке, в котором описывался первый метод. Бегло прочитав его и уже успев обрадоваться (как оказалось в дальнейшем, ненадолго), я принялся выполнять в точности все этапы по установке библиотеки, описанные в руководстве. Нюансов не возникло. Вроде библиотека установилась и расширение для PHP тоже. Казалось, что все должно было работать. Но не тут то было. Сначала я подключил нейронную сеть, которую использовал на denwere. Но результат оказался нулевым. Оказалось, что не проходила даже инициализация самой библиотеки. Перечитав еще раз руководство по установке и аналогичные руководства с других ресурсов, я понимал, что все должно работать. Но в итоге ничего не работало. Два дня у меня ушло на решение проблемы с установкой. Когда все возможные варианты (а их было немного) были исчерпаны у меня “пронеслась” мысль, а что если дистрибутив из репозитариев самой библиотеки “битый”. И как оказалось в дальнейшем, так оно и было. Поэтому рекомендую вам использовать второй метод установки, в итоге все будет работать, и ваши нервы будут в полном порядке.

Начало установки


Для установки нам нужны следующие инструменты:

  1. программа make;
  2. компилятор gcc;
  3. утилита phpize из пакета php5-dev.

Если первые два инструмента могут уже быть проинсталлированы, то третий, скорее всего нет. Но мы на всякий случай проверим все три.

dpkg -l | grep make
ii  makedev	2.3.1-88   creates device files in /dev
dpkg -l | grep gcc
ii  gcc-3.3-base   1:3.3.6-15   The GNU Compiler Collection (base package)
ii  gcc-4.1-base   4.1.2-25     The GNU Compiler Collection (base package)
ii  gcc-4.3-base   4.3.2-1.1    The GNU Compiler Collection (base package)
ii  libgcc1        1:4.3.2-1.1 GCC support library
dpkg -l | grep php5-dev

Ну вот, как и следовало ожидать, у нас действительно ничего не проинсталлировано. До начала установки, желательно произвести обновление репозиториев. Для этого воспользуемся командой:

apt-get update

Теперь необходимо установить отсутствовавшие инструментарии:

apt-get install make
apt-get install gcc
apt-get install php5-dev

Далее необходимо получить информацию об архитектуре, чтобы знать какие пакеты библиотеки Fast Artificial Neural Network (хотя Debian не даст уставить пакеты с неподходящей архитектурой) устанавливать. Для этого используем команду:

uname –m

По результату видим, что сервер имеет архитектуру:

i686

Переходим в каталог /usr/local/src и скачиваем для архитектуры i686 следующие пакеты:

cd /usr/local/src
wget http://ubuntu.mirror.cambrium.nl/ubuntu//pool/universe/libf/libfann1/
libfann1_1.2.0-1_i386.deb
wget http://ubuntu.mirror.cambrium.nl/ubuntu//pool/universe/libf/libfann1/
libfann1-dev_1.2.0-1_i386.deb

Убедимся все ли скачалось:

ls -1
libfann1_1.2.0-1_i386.deb
libfann1-dev_1.2.0-1_i386.deb

Теперь их необходимо установить в определенном порядке:

dpkg -i libfann1_1.2.0-1_i386.deb
dpkg -i libfann1-dev_1.2.0-1_i386.deb

Установка расширения для PHP


Для того чтобы приступить установке расширения, его необходимо скачать:

wget http://pecl.php.net/get/fann

Проверим или архив на месте:
ls -1
fann


Далее его необходимо распаковать:

tar xvfz fann
package.xml
fann-0.1.1/config.m4
fann-0.1.1/fann.c
fann-0.1.1/php_fann.h
fann-0.1.1/demo.php
fann-0.1.1/CREDITS
fann-0.1.1/EXPERIMENTAL

Затем перейдем в каталог /usr/local/src/fann-0.1.1

cd fann-0.1.1

Все, осталось только все скомпилировать. Для начала необходимо выполнить команду phpize. Которая подготовит окружение PHP-расширения.

phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

Далее необходимо запустить скрипт configure.

./configure

Все, сейчас осталось собрать PHP расширение программой make.

make

Если вы увидите нечто похожее на следующие строки:

fann.c:393: error: 'zif_fannOO___set' undeclared (first use in this function)
fann.c:393: error: (Each undeclared identifier is reported only once
fann.c:393: error: for each function it appears in.)
fann.c:403: error: Б-?zif_fannOO___getБ-? undeclared (first use in this function)

то нужно в файле php_fann.h закомментировать строку 28 #define PHP_FANN_OO 1. И повторить вызов программы make.

make
libtool: install: cp ./.libs/fann.so /usr/local/src/fann-0.1.1/modules/fann.so
libtool: install: cp ./.libs/fann.lai /usr/local/src/fann-0.1.1/modules/fann.la
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/sbin" ldconfig -n /usr/local/src/fann-0.1.1/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/src/fann-0.1.1/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Все, расширение собрано и осталось его проинсталлировать:

make install
Installing shared extensions:     /usr/lib/php5/20090626/

Если вы добавили расширение в /etc/php5/cli/php.ini, то можно посмотреть подключен ли модуль следующей командой:
php -m | grep fann
fann

Я лично стараюсь синхронизировать настройки сразу везде:

  • /etc/php5/apache2/php.ini;
  • /etc/php5/cgi/ php.ini;
  • /etc/php5/cli/ php.ini.


Для того чтобы проверить работу библиотеки, требуется запустить модуль demo.php. Он находиться в каталоге /usr/local/src/fann-0.1.1.
Еще есть небольшой один нюанс. Возможно вы не сможете использовать сеть обученную в другой версии библиотеки Fast Artificial Neural Network, с этой библиотекой. Придется под Linux ее переобучать. Но ничего страшного в этом нет.
Теги:
Хабы:
-2
Комментарии3

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн