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

# 1.すぐにプログラムを動かしたい方へ(as soon as you want)
![picture_large978-4-87311-826-0.jpeg](https://qiita-image-store.s3.amazonaws.com/0/51423/2f22bc5c-aee4-781a-ba23-cedaf7ac9695.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
```
第２章までやった段階（sample data２つだけ）
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)です。実際には数字の部分が違うかもしれません。この行の#の右側を入力してください。
それ以外の行は出力です。出力にエラー、違いがあれば、コメント欄などでご連絡くださると幸いです。
それぞれの章のフォルダに移動します。

```shell-session: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 

```shell-session

(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](https://qiita-image-store.s3.amazonaws.com/0/51423/7b8fabe2-ba5c-117a-08cd-7d890c7d4402.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](https://qiita-image-store.s3.amazonaws.com/0/51423/5bca6b61-81d8-3e39-5c61-e516bf01eaba.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)
```
<img width="516" alt="localhost3.png" src="https://qiita-image-store.s3.amazonaws.com/0/51423/d5731761-d56a-fa3d-8447-14650d48204c.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=. &
```
<img width="584" alt="localhost4.png" src="https://qiita-image-store.s3.amazonaws.com/0/51423/b60caa47-76a1-24d9-6108-87ca5e54f813.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章

```shell-session
(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はあるらしい。

```python:server.py(変更後)
from gevent.pywsgi import WSGIServer
```
編集は

```shell-session
# vi /opt/conda/lib/python3.6/site-packages/quiver_engine/server.py
```
sample_imagesを作り、他の章からのデータをコピー。ブラウザでlocalhost:8000を開く。

<img width="733" alt="deepkeras2.png" src="https://qiita-image-store.s3.amazonaws.com/0/51423/f8338603-4c87-3f16-857b-8993f128059f.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を利用する上での参考資料です。１章の続きをする上では必要ありません。
自力でdocker/anaconda/keras/tensorflowを構築する場合の手順になります。
dockerfileを作る方法ではありません。ごめんなさい。

## docker
ubuntu, debianなどのLinuxを、linux, windows, mac osから共通に利用できる仕組み。
利用するOSの設定を変更せずに利用できるのがよい。
同じ仕様で、大量の人が利用することができる。

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

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

### anaconda
pythonには、2と３という版の違いと、配布方法の違いなどがある。
Anacondaでpython3をこの１年半利用してきた。

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://qiita-image-store.s3.amazonaws.com/0/51423/db2b485c-69de-7041-7cc5-8cfa20861903.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編 ５つの関門
https://qiita.com/kaizen_nagoya/items/9c46c6da8ceb64d2d7af

64bitCPUへの道 and/or 64歳の決意
https://qiita.com/kaizen_nagoya/items/cfb5ffa24ded23ab3f60

ゼロから作るDeepLearning２自然言語処理編　読書会の進め方（例）
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への登録、２度失敗しました。最後の１ファイルが100%になったので、この記事を投稿しました。１度目の失敗です。

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
```

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

３度目の正直で登録が完了しました。ところが、登録が完了しても数分は、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

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

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

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

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

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

日本語（０）一欄
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

鉄道（０）鉄道のシステム考察はてっちゃんがてつだってくれる
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

C++ 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を含む）システムの課題、官（０）
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

自動制御、制御工学一覧（０）
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.

<a href="http://b.hatena.ne.jp/entry/s/qiita.com/kaizen_nagoya/items/483ae708c71c88419c32" class="hatena-bookmark-button" data-hatena-bookmark-layout="vertical-normal" data-hatena-bookmark-lang="ja" title="このエントリーをはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only@2x.png" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a><script type="text/javascript" src="https://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>
http://b.hatena.ne.jp/guide/bbutton