ディープラーニングを今年度こそ学習する
興味はあったものの、去年度はパッケージをインストールしただけで力尽きて何もできなかったディープラーイング、今年こそは学習したいと思います。ちなみに、仕事で使うというわけではありません、なんとなく面白そうだなと思っているだけです。趣味を聞かれたら「ディープラーニング」と答えられるくらいには、ディープラーニングを理解して色々試してみたいなと思っています。
というわけで、パッケージを入れるので力尽きないよう今年度は最初にしっかり環境構築をして、ディープラーニング自体の理解や、色々なトライアルに時間を割いて、もりもり学習進めていきたいなと思っています。
基本ネットの情報を元にそのままやっているだけですが、一部そのままでは自分の環境ではうまくいかなかったので変えたり、自分流にアレンジしているところもあります。参考にしたサイトは、記事末尾の参考リンクのところに載っけておきますので、もしこの記事の通りやってもうまくいかない人はそちらも見てみるとよいかもしれません。そもそも、私の記事を参考にしない方がよいのかもしれません。
当然ながら、この後はディープラーニングに興味ない人にとっては、完全に宇宙語が続くので興味がある方のみご覧いただくことをオススメします。
ディープラーニングのパッケージ
代表的かつ、インストールしやすい以下のパッケージをインストールしました。
- Chainer
- TensorFlow
あとはcaffeも入れたかったのですが、私の環境だと途中で詰まってしまいました。caffeは結構色々な例があって楽しげですが、インストールばかりに時間使うのはあまり本質でもないので今回は見送りました。あとは、Raspberry Pi + caffeでDeep Dreamやって満足したということもあります。あのときは、インストールがかなり辛くて若干トラウマになっています。
このときはインストールが地獄でした…
caffeどうしても入れたいという人は参考サイトとか見てみるとよいと思います。また、caffeモデルはChainer用に変換できるので、試してみるのがよいかもしれません。
Chainer
PFN(Preferred Networks)社の国産のディープラーニングのフレームワーク。PFNはファナックやトヨタと組んだりしていて、今この分野で一番勢いがある国内の会社ですね。会社のブログでもかなり有用な情報を公開しています。しゅごい。
Chainerインストール(Mac)
pythonは、下記を参照にpyenv virtualpyenvを設定しましょう。
以下のコマンドでpython2.x系の環境(anaconda2)に切り替え
$ pyenv global anaconda2-4.4.0
仮想環境chainer
生成
$ conda create -n chainer python
仮想環境chainer
に切り替え
$ pyenv global anaconda2-4.4.0/envs/chainer
ここまでで環境構築完了。以下実行して確認。
$ pyenv versions
以下のようになっていたらOK
system 2.7.11 anaconda2-4.4.0 * anaconda2-4.4.0/envs/chainer
pyenvの環境が設定できたら、あとは以下のコマンド実行するのみで完了します。楽チン。
$ pip install chainer
ただ、chainerは、バージョンによって後方互換性を切り捨てるので、バージョンには注意した方がよいです。特にver2.0へのメジャーバージョンアップで多くのプログラムは動かなくなっています。私が作成した多くのプログラムは、ver2.0には対応していないので、私は、上記の最後の行を以下のように固定してchainerをインストールしています。
$ pip install chainer==1.8.1
Chainerインストール(Linux)
参考までに、少し前にLinux(Ubuntu14.04)でchainer入れようとしたら色々ライブラリのインストールが必要でした。コマンドにすると以下くらい実行してひたすら待ち続ける必要があります。今はまた変わっているかもしれませんが…
$ sudo apt-get update $ sudo apt-get install python-pip python-dev $ sudo pip install cython $ sudo apt-get install libhdf5-dev $ sudo pip install chainer
Chainerインストール(Raspberry Pi)
Raspberry PiにもUbuntuと同じ要領で下記コマンド打ち込んだらchainerインストールできました。Raspberry Pi 3 + Raspbian Jessieでテストしました。pyenv + virtualpyenvは使っていません。
Raspberry Piのセットアップに関しては、以下記事参照下さい。
$ sudo apt-get update $ sudo apt-get install python-pip python-dev $ sudo pip install cython $ sudo apt-get install libhdf5-dev $ sudo pip install chainer
chainerのバージョン固定の話は、Raspberry Piでも同じです。私は以下で固定しています。
$ sudo pip install chainer==1.8.1
注:別のバージョン(1.24.0)をを入れようとしたとき、UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)
というエラーが発生しました。そのときは下記リンクを参考にエラー回避することでインストールできました。
Chainer テスト
以前インストールしたときも試した、MNISTのテスト。
仮想環境chainer
に切り替え
$ pyenv global anaconda2-4.4.0/envs/chainer
chainer
のリポジトリをgit clone(ダウンロード)
$ git clone https://github.com/pfnet/chainer.git
MNIST(手書き文字認識)のサンプルを実行
$ python chainer/examples/mnist/train_mnist.py
以下のように実行結果が出力されます。
GPU: -1 # unit: 1000 # Minibatch-size: 100 # epoch: 20 Network type: simple 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.192114913904, accuracy=0.941716670543, throughput=2164.78915958 images/sec test mean loss=0.1126654516, accuracy=0.964200003147 epoch 2 train mean loss=0.0749118167783, accuracy=0.976266677082, throughput=2299.87186756 images/sec test mean loss=0.0879497602012, accuracy=0.972200007439 epoch 3 train mean loss=0.047495209059, accuracy=0.984833344022, throughput=2211.14154271 images/sec test mean loss=0.0716102248886, accuracy=0.978400006294 epoch 4 train mean loss=0.0367159996387, accuracy=0.987916675707, throughput=2190.24258468 images/sec test mean loss=0.0707393590377, accuracy=0.979500007033 epoch 5 train mean loss=0.0298563094352, accuracy=0.990383341114, throughput=1837.79638508 images/sec test mean loss=0.0732800422167, accuracy=0.979500008225 epoch 6
学習している様子です。これだけだとよくわからないですね。
tensorflow
ご存知googleのディープラーニングのフレームワーク。
tensorflowのインストール(Mac)
python2.x系の環境(anaconda-2.4.0)に切り替え
$ pyenv global anaconda2-4.4.0
以下コマンドで仮想環境tensorflow
生成します。
$ conda create -n tensorflow python
上記でも良いのですが、自分の場合は画像認識をするため、画像の前処理のため、画像処理を行ったり、学習結果の可視化のためのグラフ描画を行うために、PIL/OpenCVやpandas/matplotlib等もインストールするため、以下で必要なパッケージを追加してインストールしています。ここでインストールせずに、後からpipで必要なものだけインストールしてもOKです。
$ conda create -n tensorflow PIL opencv pandas matplotlib
仮想環境tensorflow
に切り替え
$ pyenv global anaconda2-4.4.0/envs/tensorflow
あとは以下のみで完了です。楽チン。
$ pip install --upgrade tensorflow
何か問題あれば、下記公式のインストールガイドを確認しましょう。
Installing TensorFlow | TensorFlow
python3系でもanaconda3.2.5を使うことで、同様の要領でインストールできます。
また、TensorFlowは、kerasというラッパーを使うとコードが簡単にかけますので、インストールしておくと良いかもしれません。インストールは下記コマンド実行するだけです
$ pip install keras
TensorFlowのインストール(Raspberry Pi)
以下リポジトリにRaspberry Piに対応したtensorflowとインストールガイドがあります。非公式な点は注意しましょう。公式はソースからビルドする必要がありますが、大変なようです(試したことはないです)。
Raspberry PiとTensorFlowの組み合わせに関しては、以下記事でまとめましたので参照下さい。
まとめ
これで一通りインストールできました。後はもりもり色々なことを試していきたいと思います。まずは、先人の知恵を色々キャッチアップしてから、今年中に少しでもオリジナリティを出せればと思っています。この分野の専門家ではないので、すぐに何か凄いことをするのは難しそうですが、自分なりに地道にやっていって、何か得られればよいなというくらいの気長な気持ちでいきたいと思います。
この分野は、技術に精通しているのももちろんですが、どのようなアプリケーションに適用するかがかなり重要に見えるので、自分ならではの組み合わせを見つけられれば価値はあるのじゃないかなと思っています。
関連記事
参考リンク
ディープラーニングの有名ライブラリ5種を最短距離で試す半日コース(TensorFlow, Chainer, Caffe, DeepDream, 画風変換) - Over&Out その後
Chainerをインストールしてみる - そこに部品があるから
履歴
2017/08/16 anacondaのバージョン修正、thenoに関する記述削除
2017/08/09 微修正とRaspberry PiとTensorFlowのセットアップに関してリンク追記
2017/07/02 Chainerのバージョン固定に関して追記