1.すぐにプログラムを動かしたい方へ(as soon as you want)
Antonio Gulli、Sujit Pal 著、大串 正矢 、久保 隆宏、中山 光樹 訳
https://www.oreilly.co.jp/books/9784873118260/
docker
dockerは複数人で同じ設定で作業、実験、実習ができるとても便利な道具です。
今、利用しているPCの環境と全く別に作ります。
PCでどのような設定をしていても、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)です。実際には数字の部分が違うかもしれません。この行の#の右側を入力してください。
それ以外の行は出力です。出力にエラー、違いがあれば、コメント欄などでご連絡くださると幸いです。
それぞれの章のフォルダに移動します。
(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というファイルはないらしい。
from gevent.wsgi import WSGIServer
の行でエラーがでている。検索するとgevent.pywsgtはあるらしい。
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
ubuntu, debianはDebian系の道具類の配布の仕組みが利用できる。
apt-getのよいところは、debianというカーネルの開発者が大勢集まっており、基本機能の整合性を厳密に取っているところにある。
通信規約の改良にあたって、Linuxのカーネルに手を入れる必要があったときに、ソースをaptで導入し、patch適用後コンパイルしてもエラーなくコンパイルできて以来、linuxといえばaptが利用できるDebian系を愛用している。
Raspberry PIで有名なRaspbianもDebian系で、aptが利用できる。
そのため、dockerで作業した状況をRaspbianで再現することはとても容易である。
(base) root@0da2c87a513f:/# apt update; apt -y upgrade
conda install
pythonには、pipというpythonのライブラリ等を導入する仕組みがある。
今回は、condaというanaconda専用のライブラリ導入の仕組みを利用してみる。
pipではなくcondaを利用した理由は、本に書いてあるように作業したらエラーでうまくいかなかったから。
直感Deep Learning, dockerに挑戦(1) pull 書籍通り
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できるようになりました。
データサイエンティストの気づき!「勉強だけして仕事に役立てない人。大嫌い!!」『それ自分かも?』ってなった!!!
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
文書履歴(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
ver. 0.27 表記加筆 20200215
ver. 0.28 表題順番入れ替え 20220918