ディープラーニングの主要なパッケージ(Chainer/Tensorflow)をインストールする方法@Mac/Linux(Raspberry Pi)

2017/08/16 anacondaのバージョン修正、thenoに関する記述削除
2017/08/09 微修正とRaspberry PiとTensorFlowのセットアップに関してリンク追記
2017/07/02 Chainerのバージョン固定に関して追記

ディープラーニングを今年度こそ学習する

 興味はあったものの、去年度はパッケージをインストールしただけで力尽きて何もできなかったディープラーイング、今年こそは学習したいと思います。ちなみに、仕事で使うというわけではありません、なんとなく面白そうだなと思っているだけです。趣味を聞かれたら「ディープラーニング」と答えられるくらいには、ディープラーニングを理解して色々試してみたいなと思っています。
 というわけで、パッケージを入れるので力尽きないよう今年度は最初にしっかり環境構築をして、ディープラーニング自体の理解や、色々なトライアルに時間を割いて、もりもり学習進めていきたいなと思っています。

 基本ネットの情報を元にそのままやっているだけですが、一部そのままでは自分の環境ではうまくいかなかったので変えたり、自分流にアレンジしているところもあります。参考にしたサイトは、記事末尾の参考リンクのところに載っけておきますので、もしこの記事の通りやってもうまくいかない人はそちらも見てみるとよいかもしれません。そもそも、私の記事を参考にしない方がよいのかもしれません。

 当然ながら、この後はディープラーニングに興味ない人にとっては、完全に宇宙語が続くので興味がある方のみご覧いただくことをオススメします。

ディープラーニングのパッケージ

 代表的かつ、インストールしやすい以下のパッケージをインストールしました。

  • Chainer
  • TensorFlow

 あとはcaffeも入れたかったのですが、私の環境だと途中で詰まってしまいました。caffeは結構色々な例があって楽しげですが、インストールばかりに時間使うのはあまり本質でもないので今回は見送りました。あとは、Raspberry Pi + caffeでDeep Dreamやって満足したということもあります。あのときは、インストールがかなり辛くて若干トラウマになっています。

 このときはインストールが地獄でした…

 caffeどうしても入れたいという人は参考サイトとか見てみるとよいと思います。また、caffeモデルはChainer用に変換できるので、試してみるのがよいかもしれません。

Chainer

 PFN(Preferred Networks)社の国産のディープラーニングのフレームワーク。PFNはファナックやトヨタと組んだりしていて、今この分野で一番勢いがある国内の会社ですね。会社のブログでもかなり有用な情報を公開しています。しゅごい。

Preferred Research

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)というエラーが発生しました。そのときは下記リンクを参考にエラー回避することでインストールできました。

Pythonと日本語環境 - 紫藤のWiki

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をインストールしてみる - そこに部品があるから

深層学習ライブラリ Keras - 人工知能に関する断創録