こんにちは。
機械学習のアルゴリズムとして、最近はディープラーニング(Deep Learning)が話題になっているので少しいじってみることにしました。
Python用のライブラリを物色していると、chainerというライブラリが良さそうです。
#機能や使い勝手の確認はこれからですが、とにかくインストールが簡単そうです (^^;
必要なパッケージ
githubの説明を見てみると最低限必要なものは以下のとおりです。
- Python 2.7+, 3.4+
- NumPy
- Six 1.9+
これなら、Sixだけバージョン1.9にアップデートすればイケそうです。(もともと1.7はインストール済み)
Sixは、Python 2.xと3.xの差異を吸収するための互換ライブラリで、Sixはバージョン間の差異を吸収するためのユーティリティ関数を提供します。
pip uninstall six //古いsixをアンインストール pip install six //最新のsixをインストール
インストール
次にchainerをインストールします。
pip install chainer
続けてMNISTの手書きデータを認識させるサンプルを実行してみます。
ちなみに、MNISTとは70000サンプルの数字の手書き画像データです。個々の手書き数字データは、28×28ピクセルからなり、各ピクセルは0から255の値を取ります。
機械学習の研究用のデータとしてよく利用されているデータセットです。
では、まずはgithubからwgetを使ってサンプルコードをダウンロード。
wget --no-check-certificate https://github.com/pfnet/chainer/archive/v1.1.2.tar.gz
証明書の検証が正しくできなかったので”–no-check-certificate”オプションを付けました。
ダウンロードしたファイルを解凍します。
tar xzf v1.1.2.tar.gz
python chainer-1.1.2/examples/mnist/train_mnist.py
実行すると次のように訓練とテストが繰り返されていきます。
load MNIST dataset Downloading train-images-idx3-ubyte.gz... Done Downloading train-labels-idx1-ubyte.gz... Done Downloading t10k-images-idx3-ubyte.gz... Done Downloading t10k-labels-idx1-ubyte.gz... Done Converting training data... Done Converting test data... Done Save output... Done Convert completed ('epoch', 1) graph generated train mean loss=0.279352151516, accuracy=0.913850001084 test mean loss=0.121526297252, accuracy=0.963000004292 ('epoch', 2) train mean loss=0.139287877449, accuracy=0.957866669993 test mean loss=0.0862284902227, accuracy=0.973300007582 <<省略>> ('epoch', 20) train mean loss=0.0446550305256, accuracy=0.987416676482 test mean loss=0.0657925747195, accuracy=0.982500008345
インストールまでは簡単でしたね。
サンプルを動かしてみる
続いてword2vecのサンプルを動かしてみます。
C:\temp\chainer-1.1.2\examples\ptb>ls README.md download.py train_ptb.py
C:\temp\chainer-1.1.2\examples\ptb>python download.py C:\temp\chainer-1.1.2\examples\ptb>ls README.md ptb.test.txt ptb.valid.txt download.py ptb.train.txt train_ptb.py
ptb.test.txt、ptb.valid.txt、ptb.train.txtの3つのファイルができます。
ptb.train.txtを、chainer-1.1.2\examples\word2vecは以下に置きます。
train_word2vec.pyを実行します。
python train_word2vec.py
この処理はかなり時間がかかります。
終了するとモデルのファイル(model.pickle)ができています。
search.pyを実行します。
プロンプトにワードを入れると関連する語が表示されます。
ibmと入力してみます。
python search.py >> ibm query: ibm computer: 0.458478599787 software: 0.446164906025 mainframe: 0.416040301323 computers: 0.409894824028 aborted: 0.399061322212 >>