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

от автора

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

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

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

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

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

  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 ее переобучать. Но ничего страшного в этом нет.

ссылка на оригинал статьи http://habrahabr.ru/post/178881/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *