下丸子のコネクショニスト

機械学習、人工知能などの話題について触れます。

Long Short Term Memory (LSTM) ライブラリ導入

趣味でLSTMを使いたくなったので導入しました。

LSTMは近年Deep Learning系の論文でしばしば使われるようになってきた技術で、

文章など連続的・複雑な構造を持つデータを扱うことができる。

リカレントニューラルネットワークの一種と言われています。

 

まずはどんなライブラリがあるのかを調べたところ、

下記にちょうどいいベンチマークがあった。

LSTM Library Benchmarks [HAMR@ISMIR 2014 Proceedings]

 

どうやらCURRENNTというライブラリが高速性に優れているもよう。

早速導入してみる。

今回導入する環境はUbuntu 14.04 LTS, 970GTXの構成。

 

インストール準備

CURRENNT | SourceForge.net

ここにあるREADMEを見てみると、下記のソフトウェアが必要なようだ。

* CUDA Toolkit 5.0
* GCC 4.6 or higher
* NetCDF scientific data library
* Boost library 1.48 or higher

私の環境にはCUDA 6.5, BoostとGCCはなにがしかが入っているので、

NetCDFだけ新たに導入した。

まず下記のページからnetcdf-4.3.3.tar.gzをダウンロード。

http://www.unidata.ucar.edu/downloads/netcdf/index.jsp

 

NetCDFを導入する際は下記を参考にし、

NETCDF - Ryo Masumura: Web

$ CXXFLAGS  = '-fPIC -m64'

$ export CXXFLAGS

$ CFLAGS = '-fPIC -m64'
$ export CXXFLAGS

を行ってインストールを試行した。しかしM4がないというエラーが発生。

$ sudo apt-get install M4

としたら、M4は最新だが

m4 : Depends: libsigsegv2 (>= 2.9) but it is not going to be installed

とのことだった。

そこで

$ sudo apt-get install libsigsegv2

としてインストールを行った。

最後にNetCDFを下記のようにインストールした。

./configure --prefix=/usr/local/netcdf-4.3.3/

make

sudo make install

ただし以下の方法のほうが簡単だったと思われる…。

sudo apt-get install libnetcdf-dev

 

インストールの実行

次に、currennt-0.2-rc1.zipを下記のサイトからダウンロードしてきた。

CURRENNT | SourceForge.net

$ unzip currennt-0.2-rc1.zip

$ mkdir build && cd build

$ cmake ..

$ make

 上記のコマンドでインストールした。

 

使ってみた

/example/speechautoencoding_chime/

に学習用のバッチファイルがあるので、実行してみる。

f:id:yukisaito:20150221223634p:plain

うまく動いているようだ。 どんだけいいのかは分からないが。

 学習後、trained_network.jsnというファイルが吐き出され、

 このなかに学習した重みが入っていた。

 

まだいまいちうまく動いているのかが分からないので、

実際の例と合わせて今後検証していきたい。

 

<