LoginSignup
41
55
新規開発や新技術の検証、導入にまつわる記事を投稿しよう!

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

Last updated at Posted at 2018-09-22

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

picture_large978-4-87311-826-0.jpeg
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)です。実際には数字の部分が違うかもしれません。この行の#の右側を入力してください。
それ以外の行は出力です。出力にエラー、違いがあれば、コメント欄などでご連絡くださると幸いです。
それぞれの章のフォルダに移動します。

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現在)

ch01.png

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 を表示してください。

ch01-2.png

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)
localhost3.png

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=. &
localhost4.png

本ではtensorboard --logdir=.
と書かれています。
最後に空白と&を書けば、次の入力が可能になります。

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

# apt 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を開く。

deepkeras2.png

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

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のよいところは、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 書籍通り
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取得

picture_large978-4-87311-826-0.jpeg
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登録が必要になります。

続きの作業を誰かに依頼したり、エラーがでてわからなくなったときに、対処方法を問い合わせるのにも役立ちます。ご自身の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できるようになりました。

データサイエンティストの気づき!「勉強だけして仕事に役立てない人。大嫌い!!」『それ自分かも?』ってなった!!!
https://qiita.com/kaizen_nagoya/items/d85830d58d8dd7f71d07

一覧

物理記事 上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

量子(0) 計算機, 量子力学
https://qiita.com/kaizen_nagoya/items/1cd954cb0eed92879fd4

数学関連記事100
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

言語・文学記事 100
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

自動車 記事 100
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

通信記事100
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

日本語(0)一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68

英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d

転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe

仮説(0)一覧(目標100現在40)
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df

Qiita(0)Qiita関連記事一覧(自分)
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6

鉄道(0)鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/26bda595f341a27901a0

安全(0)安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

Ethernet 記事一覧 Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48)
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網(Wi-Fi)空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

OSEK OS設計の基礎 OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

++ Support(0) 
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding(0) Rules, C, Secure, MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

プログラマによる、プログラマのための、統計(0)と確率のプログラミングとその後
https://qiita.com/kaizen_nagoya/items/6e9897eb641268766909

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

プログラムちょい替え(0)一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

官公庁・学校・公的団体(NPOを含む)システムの課題、官(0)
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

「はじめての」シリーズ  ベクタージャパン 
https://qiita.com/kaizen_nagoya/items/2e41634f6e21a3cf74eb

AUTOSAR(0)Qiita記事一覧, OSEK(75)
https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

LaTeX(0) 一覧 
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792

自動制御、制御工学一覧(0)
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧 
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

小川清最終講義、最終講義(再)計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.

文書履歴(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
ver. 0.29 ありがとう追記 20230423

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

このエントリーをはてなブックマークに追加
http://b.hatena.ne.jp/guide/bbutton

41
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
55