Edited at

dockerで機械学習(3) with anaconda(3)「直感Deep Learning」Antonio Gulli、Sujit Pal著


1.すぐにプログラムを動かしたい方へ(as soon as you want)



Antonio Gulli、Sujit Pal 著、大串 正矢 、久保 隆宏、中山 光樹 訳

https://www.oreilly.co.jp/books/9784873118260/


docker

dockerは複数人で同じ設定で作業、実験、実習ができるとても便利な道具です。

それまで利用していた環境とは全く別に作ります。

それまでどのような設定をしていても、dockerが起動し、ネットがつながれば大丈夫です。ここでは、本で紹介しているdockerの資料に直接基づかず、すぐに利用できる環境を提供し、またご自身で新たに導入したソフトを含めて、保存しておく方法を紹介します。


docker起動

dockerを導入し、Windows, Macではdockerを起動しておいてください。

Windowsでは、BiosでIntel Virtualizationをenableにしないとdockerが起動しない場合があります。

また、セキュリティの警告などが出ることがあります。

システム管理者での作業が必要になります。


docker pull and run

第1章までやった段階

$ docker pull kaizenjapan/anaconda-keras

$ docker run -it -p 8888:8888 -p 6006:6006 kaizenjapan/anaconda-keras /bin/bash

第2章までやった段階(sample data2つだけ)

quiverのソースを見るとport 8000なのでrun時に追記。

$ docker pull kaizenjapan/anaconda-keras-ten

$ docker run -it -p 8888:8888 -p 6006:6006 -p8000:8000 kaizenjapan/anaconda-keras-ten /bin/bash

dockerの中と、dockerを起動したOSのシェルとが表示が似ている場合には、どちらで操作しているか間違えることがあります。dockerの入力促進記号(comman prompt)は、docker idの数字が何桁かついています。


第1章

以下のshell sessionでは

(base) root@b789c278e622:/#

は入力促進記号(comman prompt)です。実際には数字の部分が違うかもしれません。この行の#の右側を入力してください。

それ以外の行は出力です。出力にエラー、違いがあれば、コメント欄などでご連絡くださると幸いです。

それぞれの章のフォルダに移動します。


docker

(base) root@b789c278e622:/# ls

bin boot deep-learning-with-keras-ja dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

(base) root@b789c278e622:/# cd deep-learning-with-keras-ja/

(base) root@b789c278e622:/deep-learning-with-keras-ja# ls
README.md ch01 ch02 ch03 ch04 ch05 ch06 ch07 ch08 deep-learning-with-keras-ja.png

(base) root@b789c278e622:/deep-learning-with-keras-ja# cd ch01

(base) root@b789c278e622:/deep-learning-with-keras-ja/ch01# ls
keras_MINST_V1.py keras_MINST_V2.py keras_MINST_V3.py keras_MINST_V4.py make_tensorboard.py requirements.txt requirements_gpu.txt

(base) root@b789c278e622:/deep-learning-with-keras-ja/ch01# cat requirements.txt
keras==2.1.6
tensorflow==1.8.0
h5py==2.7.1



keras_MINST_V1.py



(base) root@b789c278e622:/deep-learning-with-keras-ja/ch01# python keras_MINST_V1.py
/opt/conda/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
Using TensorFlow backend.
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11493376/11490434 [==============================] - 5s 0us/step
60000 train samples
10000 test samples
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 10) 7850
_________________________________________________________________
activation_1 (Activation) (None, 10) 0
=================================================================
Total params: 7,850
Trainable params: 7,850
Non-trainable params: 0
_________________________________________________________________
Train on 48000 samples, validate on 12000 samples
2018-09-22 04:48:47.866481: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-09-22 04:48:47.869849: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
Epoch 1/200
48000/48000 [==============================] - 2s 44us/step - loss: 1.3633 - acc: 0.6796 - val_loss: 0.8904 - val_acc: 0.8246
Epoch 2/200
48000/48000 [==============================] - 2s 35us/step - loss: 0.7913 - acc: 0.8272 - val_loss: 0.6572 - val_acc: 0.8546
Epoch 3/200
48000/48000 [==============================] - 2s 35us/step - loss: 0.6436 - acc: 0.8497 - val_loss: 0.5625 - val_acc: 0.8681

(中略)

Epoch 200/200
48000/48000 [==============================] - 2s 32us/step - loss: 0.2761 - acc: 0.9230 - val_loss: 0.2756 - val_acc: 0.9241
10000/10000 [==============================] - 1s 53us/step

Test score: 0.27738585728406906
Test accuracy: 0.9227

(base) root@b789c278e622:/deep-learning-with-keras-ja/ch01# tensorboard --logdir=.
[1] 391
/opt/conda/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
TensorBoard 1.9.0 at http://b789c278e622:6006 (Press CTRL+C to quit)

dockerを起動したOSのブラウザで localhost:6006 を表示してください。

現在、Windowsではまだうまく表示していません。(20190924現在)


keras_MINST_V2.py

(base) root@b789c278e622:/deep-learning-with-keras-ja/ch01# python keras_MINST_V2.py 

/opt/conda/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
Using TensorFlow backend.
60000 train samples
10000 test samples
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 128) 100480
_________________________________________________________________
activation_1 (Activation) (None, 128) 0
_________________________________________________________________
dense_2 (Dense) (None, 128) 16512
_________________________________________________________________
activation_2 (Activation) (None, 128) 0
_________________________________________________________________
dense_3 (Dense) (None, 10) 1290
_________________________________________________________________
activation_3 (Activation) (None, 10) 0
=================================================================
Total params: 118,282
Trainable params: 118,282
Non-trainable params: 0
_________________________________________________________________
Train on 48000 samples, validate on 12000 samples
2018-09-22 05:02:39.152849: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-09-22 05:02:39.154648: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
Epoch 1/20
48000/48000 [==============================] - 3s 64us/step - loss: 1.4815 - acc: 0.6234 - val_loss: 0.7570 - val_acc: 0.8286
Epoch 2/20
48000/48000 [==============================] - 3s 57us/step - loss: 0.6041 - acc: 0.8463 - val_loss: 0.4545 - val_acc: 0.8851
Epoch 3/20
48000/48000 [==============================] - 3s 63us/step - loss: 0.4394 - acc: 0.8803 - val_loss: 0.3706 - val_acc: 0.9020
Epoch 4/20
48000/48000 [==============================] - 3s 70us/step - loss: 0.3765 - acc: 0.8952 - val_loss: 0.3320 - val_acc: 0.9078
Epoch 5/20
48000/48000 [==============================] - 3s 58us/step - loss: 0.3414 - acc: 0.9026 - val_loss: 0.3054 - val_acc: 0.9147
Epoch 6/20
48000/48000 [==============================] - 3s 58us/step - loss: 0.3175 - acc: 0.9085 - val_loss: 0.2880 - val_acc: 0.9184
Epoch 7/20
48000/48000 [==============================] - 3s 54us/step - loss: 0.2990 - acc: 0.9136 - val_loss: 0.2728 - val_acc: 0.9224
Epoch 8/20
48000/48000 [==============================] - 3s 54us/step - loss: 0.2840 - acc: 0.9180 - val_loss: 0.2609 - val_acc: 0.9266
Epoch 9/20
48000/48000 [==============================] - 3s 58us/step - loss: 0.2716 - acc: 0.9217 - val_loss: 0.2506 - val_acc: 0.9296
Epoch 10/20
48000/48000 [==============================] - 2s 48us/step - loss: 0.2605 - acc: 0.9252 - val_loss: 0.2434 - val_acc: 0.9309
Epoch 11/20
48000/48000 [==============================] - 3s 63us/step - loss: 0.2505 - acc: 0.9285 - val_loss: 0.2344 - val_acc: 0.9330
Epoch 12/20
48000/48000 [==============================] - 2s 52us/step - loss: 0.2412 - acc: 0.9299 - val_loss: 0.2275 - val_acc: 0.9352
Epoch 13/20
48000/48000 [==============================] - 3s 62us/step - loss: 0.2329 - acc: 0.9332 - val_loss: 0.2231 - val_acc: 0.9365
Epoch 14/20
48000/48000 [==============================] - 2s 50us/step - loss: 0.2257 - acc: 0.9350 - val_loss: 0.2152 - val_acc: 0.9394
Epoch 15/20
48000/48000 [==============================] - 3s 55us/step - loss: 0.2185 - acc: 0.9374 - val_loss: 0.2086 - val_acc: 0.9413
Epoch 16/20
48000/48000 [==============================] - 2s 48us/step - loss: 0.2120 - acc: 0.9391 - val_loss: 0.2034 - val_acc: 0.9427
Epoch 17/20
48000/48000 [==============================] - 3s 59us/step - loss: 0.2059 - acc: 0.9410 - val_loss: 0.1985 - val_acc: 0.9447
Epoch 18/20
48000/48000 [==============================] - 3s 61us/step - loss: 0.2000 - acc: 0.9427 - val_loss: 0.1936 - val_acc: 0.9454
Epoch 19/20
48000/48000 [==============================] - 3s 55us/step - loss: 0.1946 - acc: 0.9430 - val_loss: 0.1900 - val_acc: 0.9465
Epoch 20/20
48000/48000 [==============================] - 3s 53us/step - loss: 0.1896 - acc: 0.9453 - val_loss: 0.1855 - val_acc: 0.9495
10000/10000 [==============================] - 1s 58us/step

Test score: 0.18647454718351364
Test accuracy: 0.9458
(base) root@b789c278e622:/deep-learning-with-keras-ja/ch01# tensorboard --logdir=.

dockerを起動したOSのブラウザで localhost:6006 を表示してください。


keras_MINST_V3.py

# python keras_MINST_V3.py 

/opt/conda/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
Using TensorFlow backend.
60000 train samples
10000 test samples
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 128) 100480
_________________________________________________________________
activation_1 (Activation) (None, 128) 0
_________________________________________________________________
dropout_1 (Dropout) (None, 128) 0
_________________________________________________________________
dense_2 (Dense) (None, 128) 16512
_________________________________________________________________
activation_2 (Activation) (None, 128) 0
_________________________________________________________________
dropout_2 (Dropout) (None, 128) 0
_________________________________________________________________
dense_3 (Dense) (None, 10) 1290
_________________________________________________________________
activation_3 (Activation) (None, 10) 0
=================================================================
Total params: 118,282
Trainable params: 118,282
Non-trainable params: 0
_________________________________________________________________
Train on 48000 samples, validate on 12000 samples
2018-09-24 12:39:51.444177: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-09-24 12:39:51.450098: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
Epoch 1/20
48000/48000 [==============================] - 4s 73us/step - loss: 1.7388 - acc: 0.4541 - val_loss: 0.9260 - val_acc: 0.8131
Epoch 2/20
48000/48000 [==============================] - 3s 58us/step - loss: 0.9221 - acc: 0.7228 - val_loss: 0.5388 - val_acc: 0.8652
Epoch 3/20
48000/48000 [==============================] - 3s 55us/step - loss: 0.6933 - acc: 0.7877 - val_loss: 0.4291 - val_acc: 0.8883

(中略)

Epoch 19/20
48000/48000 [==============================] - 3s 55us/step - loss: 0.3023 - acc: 0.9118 - val_loss: 0.2019 - val_acc: 0.9409
Epoch 20/20
48000/48000 [==============================] - 3s 55us/step - loss: 0.2935 - acc: 0.9129 - val_loss: 0.1975 - val_acc: 0.9420
10000/10000 [==============================] - 0s 49us/step

Test score: 0.19955925024673343
Test accuracy: 0.9401
(base) root@987be32a0721:/deep-learning-with-keras-ja/ch01# tensorboard --logdir=.
[1] 391/opt/conda/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
TensorBoard 1.9.0 at http://987be32a0721:6006 (Press CTRL+C to quit)


keras_MINST_V4.py

(base) root@987be32a0721:/deep-learning-with-keras-ja/ch01# python keras_MINST_V4.py 

/opt/conda/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
Using TensorFlow backend.
60000 train samples
10000 test samples
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 128) 100480
_________________________________________________________________
activation_1 (Activation) (None, 128) 0
_________________________________________________________________
dropout_1 (Dropout) (None, 128) 0
_________________________________________________________________
dense_2 (Dense) (None, 128) 16512
_________________________________________________________________
activation_2 (Activation) (None, 128) 0
_________________________________________________________________
dropout_2 (Dropout) (None, 128) 0
_________________________________________________________________
dense_3 (Dense) (None, 10) 1290
_________________________________________________________________
activation_3 (Activation) (None, 10) 0
=================================================================
Total params: 118,282
Trainable params: 118,282
Non-trainable params: 0
_________________________________________________________________Train on 48000 samples, validate on 12000 samples
2018-09-24 12:49:03.821580: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-09-24 12:49:03.824188: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
Epoch 1/20
48000/48000 [==============================] - 3s 71us/step - loss: 0.4912 - acc: 0.8504 - val_loss: 0.1860 - val_acc: 0.9458
Epoch 2/20
48000/48000 [==============================] - 3s 63us/step - loss: 0.2395 - acc: 0.9283 - val_loss: 0.1398 - val_acc: 0.9570
Epoch 3/20
48000/48000 [==============================] - 3s 64us/step - loss: 0.1859 - acc: 0.9438 - val_loss: 0.1179 - val_acc: 0.9657

(中略)

Epoch 19/20
48000/48000 [==============================] - 3s 62us/step - loss: 0.0750 - acc: 0.9781 - val_loss: 0.0976 - val_acc: 0.9780
Epoch 20/20
48000/48000 [==============================] - 3s 64us/step - loss: 0.0723 - acc: 0.9786 - val_loss: 0.0955 - val_acc: 0.9792
10000/10000 [==============================] - 1s 54us/step

Test score: 0.0878591103206294
Test accuracy: 0.9794
(base) root@987be32a0721:/deep-learning-with-keras-ja/ch01# tensorboard --logdir=. &

本ではtensorboard --logdir=.

と書かれています。

最後に空白と&を書けば、次の入力が可能になります。

ただし、procpsをinstallし、psコマンドで起動しているtensorboardをkillしないとエラーになります。

# apt-get install -y procps

# ps -ax
PID TTY STAT TIME COMMAND
1 pts/0 Ss 0:00 /usr/bin/tini -- /bin/bash
6 pts/0 S 0:00 /bin/bash
41 pts/0 Sl 0:04 /opt/conda/bin/python /opt/conda/bin/tensorboard --logdir=.
210 pts/0 R+ 0:00 ps -ax
# kill 41


第2章

(base) root@987be32a0721:/deep-learning-with-keras-ja/ch02# python quiver.py

/opt/conda/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
Using TensorFlow backend.
Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels.h5
553467904/553467096 [==============================] - 830s 2us/step
2018-09-25 04:54:41.975093: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-09-25 04:54:41.977013: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
Starting webserver from: /opt/conda/lib/python3.6/site-packages/quiver_engine

最初はserver.pyでエラーが出た。gevent.wsgiというファイルはないらしい。


server.py

from gevent.wsgi import WSGIServer


の行でエラーがでている。検索するとgevent.pywsgtはあるらしい。


server.py(変更後)

from gevent.pywsgi import WSGIServer


編集は

# vi /opt/conda/lib/python3.6/site-packages/quiver_engine/server.py

sample_imagesを作り、他の章からのデータをコピー。ブラウザでlocalhost:8000を開く。

操作中に下記エラーあり。

FileNotFoundError: [Errno 2] No such file or directory: './tmp/block3_pool_0_cat.png.png'

現在検討中。


2. dockerを自力で構築する方へ

anaconda/keras/tensorflow方針(docker deploy policy)

ここから下は、上記のpullしていただいたdockerをどういう方針で、どういう手順で作ったかを記録します。

上記のdockerを利用する上での参考資料です。1章の続きをする上では必要ありません。

自力でdocker/anaconda/keras/tensorflowを構築する場合の手順になります。

dockerfileを作る方法ではありません。ごめんなさい。


docker

ubuntu, debianなどのLinuxを、linux, windows, mac osから共通に利用できる仕組み。

利用するOSの設定を変更せずに利用できるのがよい。

同じ仕様で、大量の人が利用することができる。

ソフトウェアの開発元が公式に対応しているものと、利用者が便利に仕立てたものの両方が利用可能である。今回は、公式に配布しているものを、自分で仕立てて、他の人にも利用できるようにする。


python

DeepLearningの実習をPhthonで行って来た。

pythonを使う理由は、多くの機械学習の仕組みがpythonで利用できることと、Rなどの統計解析の仕組みもpythonから容易に利用できることがある。


anaconda

pythonには、2と3という版の違いと、配布方法の違いなどがある。

Anacondaでpython3をこの1年半利用してきた。

Anacondaを利用した理由は、統計解析のライブラリと、JupyterNotebookが初めから入っているからである。


docker公式配布

ubuntu, debianなどのOSの公式配布,gcc, anacondaなどの言語の公式配布などがある。

これらを利用し、docker-hubに登録することにより、公式配布の質の確認と、変更権を含む幅広い情報の共有ができる。dockerが公式配布するものではなく、それぞれのソフト提供者の公式配布という意味。


docker pull

docker公式配布の利用は、URLからpullすることで実現する。


docker Anaconda

anacondaが公式配布しているものを利用。

$  docker pull continuumio/anaconda3

Using default tag: latest
latest: Pulling from continuumio/anaconda3
cc1a78bfd46b: Pull complete
314b82d3c9fe: Pull complete
adebea299011: Pull complete
f7baff790e81: Pull complete
Digest: sha256:e07b9ca98ac1eeb1179dbf0e0bbcebd87701f8654878d6d8ce164d71746964d1
Status: Downloaded newer image for continuumio/anaconda3:latest


docker run

実行はdocker runである。今回はブラウザで閲覧するため-pの設定を行う。

$ docker run -it -p 8888:8888 -p 6006:6006  continuumio/anaconda3 /bin/bash

(base) root@0da2c87a513f:/#


apt-get

ubuntu, debianはDebian系の道具類の配布の仕組みが利用できる。

apt-getのよいところは、debianというカーネルの開発者が大勢集まっており、基本機能の整合性を厳密に取っているところにある。

通信規約の改良にあたって、Linuxのカーネルに手を入れる必要があったときに、ソースをaptで導入し、patch適用後コンパイルしてもエラーなくコンパイルできて以来、linuxといえばaptが利用できるDebian系を愛用している。

Raspberry PIで有名なRaspbianもDebian系で、aptが利用できる。

そのため、dockerで作業した状況をRaspbianで再現することはとても容易である。

(base) root@0da2c87a513f:/# apt-get update

Ign:1 http://deb.debian.org/debian stretch InRelease
Get:2 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB]
Get:3 http://deb.debian.org/debian stretch-updates InRelease [91.0 kB]
Get:4 http://deb.debian.org/debian stretch Release [118 kB]
Get:5 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [549 kB]
Get:6 http://deb.debian.org/debian stretch-updates/main amd64 Packages.diff/Index [5164 B]
Get:7 http://deb.debian.org/debian stretch Release.gpg [2434 B]
Get:8 http://deb.debian.org/debian stretch-updates/main amd64 Packages 2018-07-20-2027.50.pdiff [1134 B]
Get:9 http://deb.debian.org/debian stretch-updates/main amd64 Packages 2018-07-31-2010.17.pdiff [1388 B]
Get:9 http://deb.debian.org/debian stretch-updates/main amd64 Packages 2018-07-31-2010.17.pdiff [1388 B]
Get:10 http://deb.debian.org/debian stretch/main amd64 Packages [9500 kB]
Fetched 10.4 MB in 27s (380 kB/s)
Reading package lists... Done


conda install

pythonには、pipというpythonのライブラリ等を導入する仕組みがある。

今回は、condaというanaconda専用のライブラリ導入の仕組みを利用してみる。

pipではなくcondaを利用した理由は、本に書いてあるように作業したらエラーでうまくいかなかったから。

直感Deep Learning, dockerに挑戦(1) pull 書籍通り

https://qiita.com/kaizen_nagoya/items/5c736539d7d096c0a161


tensorflow

# conda install tensorflow

Solving environment: done

## Package Plan ##

environment location: /opt/conda

added / updated specs:
- tensorflow

The following packages will be downloaded:

package | build
---------------------------|-----------------
_tflow_190_select-0.0.3 | mkl 2 KB
tensorboard-1.9.0 | py36hf484d3e_0 3.3 MB
termcolor-1.1.0 | py36_1 7 KB
protobuf-3.6.0 | py36hf484d3e_0 610 KB
tensorflow-base-1.9.0 |mkl_py36h2ca6a6a_0 75.7 MB
tensorflow-1.9.0 |mkl_py36h6d6ce78_1 3 KB
gast-0.2.0 | py36_0 15 KB
markdown-2.6.11 | py36_0 104 KB
grpcio-1.12.1 | py36hdbcaa40_0 1.7 MB
libprotobuf-3.6.0 | hdbcaa40_0 4.1 MB
conda-4.5.11 | py36_0 1.0 MB
absl-py-0.4.1 | py36_0 144 KB
astor-0.7.1 | py36_0 43 KB
------------------------------------------------------------
Total: 86.7 MB

The following NEW packages will be INSTALLED:

_tflow_190_select: 0.0.3-mkl
absl-py: 0.4.1-py36_0
astor: 0.7.1-py36_0
gast: 0.2.0-py36_0
grpcio: 1.12.1-py36hdbcaa40_0
libprotobuf: 3.6.0-hdbcaa40_0
markdown: 2.6.11-py36_0
protobuf: 3.6.0-py36hf484d3e_0
tensorboard: 1.9.0-py36hf484d3e_0
tensorflow: 1.9.0-mkl_py36h6d6ce78_1
tensorflow-base: 1.9.0-mkl_py36h2ca6a6a_0
termcolor: 1.1.0-py36_1

The following packages will be UPDATED:

conda: 4.5.4-py36_0 --> 4.5.11-py36_0

Proceed ([y]/n)? y

Downloading and Extracting Packages
_tflow_190_select-0. | 2 KB | ####################################################################################################################################### | 100%
tensorboard-1.9.0 | 3.3 MB | ####################################################################################################################################### | 100%
termcolor-1.1.0 | 7 KB | ####################################################################################################################################### | 100%
protobuf-3.6.0 | 610 KB | ####################################################################################################################################### | 100%
tensorflow-base-1.9. | 75.7 MB | ####################################################################################################################################### | 100%
tensorflow-1.9.0 | 3 KB | ####################################################################################################################################### | 100%
gast-0.2.0 | 15 KB | ####################################################################################################################################### | 100%
markdown-2.6.11 | 104 KB | ####################################################################################################################################### | 100%
grpcio-1.12.1 | 1.7 MB | ####################################################################################################################################### | 100%
libprotobuf-3.6.0 | 4.1 MB | ####################################################################################################################################### | 100%
conda-4.5.11 | 1.0 MB | ####################################################################################################################################### | 100%
absl-py-0.4.1 | 144 KB | ####################################################################################################################################### | 100%
astor-0.7.1 | 43 KB | ####################################################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done


keras

(base) root@0da2c87a513f:/# conda install keras

Solving environment: done

## Package Plan ##

environment location: /opt/conda

added / updated specs:
- keras

The following packages will be downloaded:

package | build
---------------------------|-----------------
keras-applications-1.0.4 | py36_1 47 KB
keras-2.2.2 | 0 6 KB
keras-base-2.2.2 | py36_0 445 KB
keras-preprocessing-1.0.2 | py36_1 46 KB
------------------------------------------------------------
Total: 544 KB

The following NEW packages will be INSTALLED:

keras: 2.2.2-0
keras-applications: 1.0.4-py36_1
keras-base: 2.2.2-py36_0
keras-preprocessing: 1.0.2-py36_1

Proceed ([y]/n)? y

Downloading and Extracting Packages
keras-applications-1 | 47 KB | ##################################################################################################################################### | 100%
keras-2.2.2 | 6 KB | ##################################################################################################################################### | 100%
keras-base-2.2.2 | 445 KB | ##################################################################################################################################### | 100%
keras-preprocessing- | 46 KB | ##################################################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done


直感Deep Learning取得



https://www.oreilly.co.jp/books/9784873118260/

本ではdockerの推奨のURL等を掲載している。うまくいかなかったので、今回は上記方針に従い、anacondaで実施している。ただし、日本語版の書籍の資料は本にあるURLからgitで取得する。

(base) root@b789c278e622:/# git clone https://github.com/oreilly-japan/deep-learning-with-keras-ja.git

Cloning into 'deep-learning-with-keras-ja'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 127 (delta 4), reused 0 (delta 0), pack-reused 117
Receiving objects: 100% (127/127), 35.94 MiB | 6.23 MiB/s, done.
Resolving deltas: 100% (30/30), done.


第二章用


quiver_engine

(base) root@b789c278e622:/# conda install quiver_engine

Solving environment: done

## Package Plan ##

environment location: /opt/conda

added / updated specs:
- quiver_engine

The following packages will be downloaded:

package | build
---------------------------|-----------------
quiver_engine-0.1.4.1.4 | py36h1714ad7_0 366 KB

The following NEW packages will be INSTALLED:

quiver_engine: 0.1.4.1.4-py36h1714ad7_0

Proceed ([y]/n)? y

Downloading and Extracting Packages
quiver_engine-0.1.4. | 366 KB | ##################################################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

sample_imagesのフォルダがないとエラーになる。ファイルがないと困る。ひとまずch03からコピー

# cd /deep-learning-with-keras-ja/ch02

# mkdir sample_images
# cp ../ch03/sample_images sample_images


3. docker hub 登録

ここからは、新たにソフトを導入したdockerを自分のhubに登録する方法です。

ご自身で何かソフトウェアを導入されたら、ぜひhubに登録することをお勧めします。

docker hubへのID登録が必要になります。

続きの作業を誰かに依頼したり、エラーがでてわからなくなったときに、対処方法を問い合わせるのにも役立ちます。

kaizenjapanは小川清のIDです。ご自身のIDで読み替えて、ご登録ください。


第1章やった段階

$ docker ps 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b789c278e622 continuumio/anaconda3 "/usr/bin/tini -- /b…" 21 hours ago Up 21 hours 0.0.0.0:6006->6006/tcp, 0.0.0.0:8888->8888/tcp peaceful_noyce

$ docker commit b789c278e622 kaizenjapan/anaconda-keras

$ docker push kaizenjapan/anaconda-keras:latest
The push refers to repository [docker.io/kaizenjapan/anaconda-keras]
95456260f6d1: Pushed
6410333f34cf: Pushed
cf342e34eca3: Pushing [==================> ] 1.21GB/3.27GB
cea95006e36a: Pushed
0f3a12fef684: Pushed


第2章やった段階

$ docker ps 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
987be32a0721 kaizenjapan/anaconda-keras "/usr/bin/tini -- /b…" 24 hours ago Up 24 hours 0.0.0.0:6006->6006/tcp, 0.0.0.0:8888->8888/tcp ecstatic_feynman

$ docker commit 987be32a0721 kaizenjapan/anaconda-keras-ten
sha256:74cc1049f336fc78ce8a86fd7d3ceb38f565da1e2126e73270b61c7da028a5ee

$ docker push kaizenjapan/anaconda-keras-ten
The push refers to repository [docker.io/kaizenjapan/anaconda-keras-ten]
3e852b70ae29: Pushed
95456260f6d1: Mounted from kaizenjapan/anaconda-keras
6410333f34cf: Mounted from kaizenjapan/anaconda-deep
cf342e34eca3: Mounted from kaizenjapan/anaconda-deep
cea95006e36a: Mounted from kaizenjapan/anaconda-deep
0f3a12fef684: Mounted from kaizenjapan/anaconda-deep
latest: digest: sha256:5579381c4128250000bdd71d89bcc857e900059edbc2b31d50b255a97edf5385 size: 1592


4. 参考資料(reference)

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)

https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2#_reference-40b38c41d167b42beeb9

dockerで機械学習(1) with anaconda(1)「ゼロから作るDeep Learning - Pythonで学ぶディープラーニングの理論と実装」斎藤 康毅 著

https://qiita.com/kaizen_nagoya/items/a7e94ef6dca128d035ab

dockerで機械学習(2)with anaconda(2)「ゼロから作るDeep Learning2自然言語処理編」斎藤 康毅 著

https://qiita.com/kaizen_nagoya/items/3b80dfc76933cea522c6

dockerで機械学習(6) with anaconda(6)「 scikit-learnとTensorFlowによる実践機械学習」Aurélien Géron 著

https://qiita.com/kaizen_nagoya/items/140428dfce7e3234ceb7

dockerで機械学習(17) with anaconda(17)「PythonとKerasによるディープラーニング」 :Francois Chollet著

https://qiita.com/kaizen_nagoya/items/bce4fa73560370733ea2

dockerで機械学習(71) 環境構築(1) docker どっかーら、どーやってもエラーばっかり。

https://qiita.com/kaizen_nagoya/items/690d806a4760d9b9e040

dockerで機械学習(72) 環境構築(2) Docker for Windows

https://qiita.com/kaizen_nagoya/items/c4daa5cf52e9f0c2c002

dockerで機械学習(73) 環境構築(3) docker/linux/macos bash スクリプト, ms-dos batchファイル

https://qiita.com/kaizen_nagoya/items/3f7b39110b7f303a5558

dockerで機械学習(74) 環境構築(4) R 難関いくつ?

https://qiita.com/kaizen_nagoya/items/5fb44773bc38574bcf1c

dockerで機械学習(75)環境構築(5)docker関連ファイルの管理

https://qiita.com/kaizen_nagoya/items/4f03df9a42c923087b5d

「名古屋のIoTは名古屋のOSで」Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 5つの関門

https://qiita.com/kaizen_nagoya/items/9c46c6da8ceb64d2d7af

64bitCPUへの道 and/or 64歳の決意

https://qiita.com/kaizen_nagoya/items/cfb5ffa24ded23ab3f60

ゼロから作るDeepLearning2自然言語処理編 読書会の進め方(例)

https://qiita.com/kaizen_nagoya/items/025eb3f701b36209302e


Docker for windows

BIOSでInte Virtualization をenableにしていないと動作しないことを書いていない記事が多い。なぜかは調査中。

今更Docker for Windowsをインストールしたのでその備忘録

https://qiita.com/toro_ponz/items/d66d5571c4646ad33279

Docker for Windowsで起動時に「Docker for Windows - Access denied」と表示される場合の対処法

https://qiita.com/toro_ponz/items/d75706a3039f00ba1205

Windows 10 Hyper-Vユーザに送るDockerの解説

https://qiita.com/banban525/items/48aec05671c3c77d454a

Docker for WindowsでDockerを学ぶ (バージョンCE 17.06.2)

https://qiita.com/rubytomato@github/items/eec2118e89ee9bd8d17a

Docker for Windows をインストールする

https://qiita.com/centipede/items/f8d77b66343ef5096eee

Windows 10(Surface)にDocker for Windowsをインストール

https://qiita.com/chakimar/items/868298096ebf9186d690


5. お詫び(I am sorry)

docker hubへの登録、2度失敗しました。最後の1ファイルが100%になったので、この記事を投稿しました。1度目の失敗です。

Windowsのdockerからpullしようとしたら、うまくいかず、よく見ると、作業がいつまでも終了せずに最後にEOFが出ていました。

$ docker push kaizenjapan/anaconda-keras:latest

The push refers to repository [docker.io/kaizenjapan/anaconda-keras]
95456260f6d1: Pushed
6410333f34cf: Pushed
cf342e34eca3: Pushing [==================================================>] 3.27GB/3.27GB
cea95006e36a: Pushed
0f3a12fef684: Pushed
EOF

2度目は、上記の3.27Gのところが、3.34GB以上pushingした状態になっても、終了せずに失敗だったようです。retryをはじめました。

3度目の正直で登録が完了しました。ところが、登録が完了しても数分は、pullしてもないと言われつづけました。10分程度したら、pullできるようになりました。


6. 文書履歴(document history)

ver. 0.10 初稿 20180922

ver. 0.11 方針追記 20180923

ver. 0.12 ブラウザの表示方法追記 20180924朝

ver. 0.13 Windowsでの作業状況追記 20180924夕方

ver. 0.14 お詫び追記 20180924夜

ver. 0.15 condaを利用した理由追記 20180924深夜

ver. 0.16 keras_MINST_V3.py keras_MINST_V4.py 追記 20180925 零時

ver. 0.17 空白行追加訂正、docker hub、みだし数字追記 20180925 朝

ver. 0.18 利用する方を想定し文章加筆 20180925 午前

ver. 0.19 Docker for windows URL追記、空白行追加訂正、日付訂正 20180925 昼

ver. 0.20 第二章 server.pyの「from gevent.wsgi import WSGIServer」をgevent.pywsgiに変更 20180925 夕

ver. 0.21 ps, kill 記述場所変更 20180925 夜

ver. 0.22 第二章用docker登録。-p 8000追記。20180925 深夜

ver. 0.23 誤記訂正 20180926

ver. 0.24 表題変更、参考資料追記 20180927 朝

ver. 0.25 表題変更、参考資料追記 20181021

ver. 0.26 はてなブックマーク追記 20190120

http://b.hatena.ne.jp/guide/bbutton