これは、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
を検索してください)。そうでない場合は、最初にインストールする必要があります。公式サイトからダウンロードするか、ディストリビューション リポジトリから入手してください。たとえば、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 の 3 つのサンプル プロジェクトがあります。
シンプルな例では、単一のニューラル ネットワークをトレーニングして XOR 演算を実行します。
simple_train.php
simple_train_epoch.php
simple_test.php
simple_merge.php
All の例では、7 つの個別のニューラル ネットワークをトレーニングして、AND、NAND、NOR、NOT、OR、XNOR & XOR 演算を実行します。
train_all.php
test_all.php
OCR は、FANN を使用した光学式文字認識の実際的な例です。この例は限定的で間違いもありますが、OCR によって示される概念は、特徴抽出層と畳み込み層を使用して、任意のサイズの画像内の任意のフォントのテキストを認識する、より堅牢なスタック型ネットワークに適用できます。
train_ocr.php
test_ocr.php
パスファインダーは、5x5 グリッド内の開始位置からそのグリッド内の終了位置まで 8 方向のステップ パスをプロットできるニューラル ネットワークの例です。パスファインダーの例を単純にするために、壁や通行不可能な地形に対処するようにトレーニングされていませんが、トレーニングを追加することでそれを追加するのは非常に簡単です。
パスファインダー_トレイン.php
パスファインダー_テスト.php