プログラミング 美徳の不幸

Ruby, Rails, JavaScriptなどのプログラミングまとめ、解説、備忘録。

caffeインストールことはじめ

佐野研二郎の作品すべてをdeep learningで似たものを探してみたくなったので勉強し始めました(大嘘)。

◯参考サイトhogehuga.com

まぁこれが全てですね。今からのは全部これの二番煎じです。

ただ、ごく最近boot2dockerはdeprecatedになったんでかわりにtoolboxを入れます。

www.publickey1.jp

https://www.docker.com/toolboxからパッケージをダウンロードしてダブルクリックでインストーラが起動。

f:id:tkot:20150819202503p:plain

なんか2つ入りましたね。KitematicってのはGUIのdockerクライアントっぽいですね。貧弱そうだけど。このquickstartのほうを実行するとdefaultっていうmachineを作ってくれるので実行してください。

$ docker --version
### Docker version 1.8.1, build d12ea79

こうなればインストール成功です。

で次。
https://hub.docker.com/r/tleyden5iwx/caffe-cpu-master/
dockerのイメージです。説明書きを読むとelastic-thought用とか書いてあります。たいそうな名前ですね。
あとcaffeはCPUとGPUの区別があるようで、このあたりはちょっとゆるふわウェブエンジニアなんでよくわかんないですけど、今回はCPU版を使ってます。本来の画像処理の最大スペックはGPUを使わないと出ないみたい。

でelastic-thoughtってなんですかって話だけど

github.com

まぁ並列処理+REST APIを提供してくれるっぽいですね。ただまぁバリバリ開発中みたいないい振りなのにコミットログ見る限りホントに真剣に作ってるんですねかね・・・。GoとcouchbaseとNSQに依存してるのでさっきのイメージにはこれらも入ってます。

であとは

$ eval "$(docker-machine env default)"
$ docker pull tleyden5iwx/caffe-cpu-master
Using default tag: latest
Pulling repository docker.io/tleyden5iwx/caffe-cpu-master
2f197f385434: Pulling dependent layers
511136ea3c5a: Download complete
fa4fd76b09ce: Download complete
1c8294cc5160: Download complete
117ee323aaa9: Download complete
2d24f826cb16: Download complete
41fe8deda82d: Download complete
899381004fb3: Download complete
43440a7c2178: Download complete
(省略)
$ docker run -it tleyden5iwx/caffe-cpu-master:latest
$ ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# つながった

dockerコマンドのオプションはこちら。d.hatena.ne.jp

あとは

$ cd /opt/caffe/data/mnist
Resolving yann.lecun.com (yann.lecun.com)... 128.122.47.89
Connecting to yann.lecun.com (yann.lecun.com)|128.122.47.89|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9912422 (9.5M) [application/x-gzip]
Saving to: 'train-images-idx3-ubyte.gz'

(省略)

2015-08-19 10:48:07 (24.9 KB/s) - 't10k-labels-idx1-ubyte.gz' saved [4542/4542]

Unzipping...
Done.

$ cd /opt/caffe
$ sed -i 's/solver_mode: GPU/solver_mode: CPU/' lenet_solver.prototxt
$ cd ../../
$ ./examples/mnist/create_mnist.sh
Creating lmdb...
libdc1394 error: Failed to initialize libdc1394 #エラーだけど問題ないっぽい
libdc1394 error: Failed to initialize libdc1394
Done.
$ ./examples/mnist/train_lenet.sh
I0819 11:06:49.711024    35 solver.cpp:222] Solving LeNet
I0819 11:06:49.711029    35 solver.cpp:223] Learning Rate Policy: inv
I0819 11:06:49.711036    35 solver.cpp:266] Iteration 0, Testing net (#0)
I0819 11:06:54.686012    35 solver.cpp:315]     Test net output #0: accuracy = 0.099
I0819 11:06:54.686597    35 solver.cpp:315]     Test net output #1: loss = 2.30267 (* 1 = 2.30267 loss)
I0819 11:06:54.774317    35 solver.cpp:189] Iteration 0, loss = 2.30193
I0819 11:06:54.774936    35 solver.cpp:204]     Train net output #0: loss = 2.30193 (* 1 = 2.30193 loss)
I0819 11:06:54.775529    35 solver.cpp:470] Iteration 0, lr = 0.01

(中略)
I0819 11:22:28.516336    35 solver.cpp:266] Iteration 10000, Testing net (#0)
I0819 11:22:33.465322    35 solver.cpp:315]     Test net output #0: accuracy = 0.9906
I0819 11:22:33.465761    35 solver.cpp:315]     Test net output #1: loss = 0.0288935 (* 1 = 0.0288935 loss)
I0819 11:22:33.465998    35 solver.cpp:253] Optimization Done.
I0819 11:22:33.466039    35 caffe.cpp:121] Optimization Done.


最適化が完了したっぽいけどさっぱり意味がわからない。この続きはまた今度。