10
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AUTOSAR CountdownAdvent Calendar 2022

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

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

Last updated at Posted at 2018-09-25

1.すぐに利用したい方へ(as soon as)

「ゼロから作るDeep Learning2自然言語処理編」斎藤 康毅 著 
picture_large978-4-87311-836-9.jpeg
https://www.oreilly.co.jp/books/9784873118369/

<この項は書きかけです。順次追記します。>

docker

dockerを導入し、Windows, Macではdockerを起動しておいてください。
Windowsでは、BiosでIntel Virtualizationをenableにしないとdockerが起動しない場合があります。
また、セキュリティの警告などが出ることがあります。

docker pull and run

bash
$ docker pull kaizenjapan/anaconda-deep

$ docker run -it kaizenjapan/anaconda-deep /bin/bash

ファイルを共有したい場合(Macintosh)

$ docker run -v /Users/{user name}/Documents/workspace:/home/data -it kaizenjapan/anaconda-deep /bin/bash

ファイルを共有したい場合(Windows)

$ docker run -v /c/Users/{user name}/Documents/workspace:/home/data -it kaizenjapan/anaconda-deep /bin/bash

以下のshell sessionでは
(base) root@f19e2f06eabb:/#は入力促進記号(comman prompt)です。実際には数字の部分が違うかもしれません。この行の#の右側を入力してください。
それ以外の行は出力です。出力にエラー、違いがあれば、コメント欄などでご連絡くださると幸いです。
それぞれの章のフォルダに移動します。

dockerの中と、dockerを起動したOSのシェルとが表示が似ている場合には、どちらで捜査しているか間違えることがあります。dockerの入力促進記号(comman prompt)に気をつけてください。

ファイル共有または複写

dockerとdockerを起動したOSでは、ファイル共有をするか、ファイル複写するかして、生成したファイルをブラウザ等表示させてください。参考文献欄にやり方のURLを記載しています。

複写の場合は、dockerを起動したOS側で次のようにしました。f19e2f06eabbはお使いのdockerの番号で置き換えてください。複写したファイルをブラウザで表示し内容確認しました。

bash
$ docker cp f19e2f06eabb:/deep-learning-from-scratch-2/ch01/train_c1.png . 
$ docker cp f19e2f06eabb:/deep-learning-from-scratch-2/ch01/train_c2.png . 
$ docker cp f19e2f06eabb:/deep-learning-from-scratch-2/ch01/spiral.png . 
$ docker cp f19e2f06eabb:/deep-learning-from-scratch-2/ch02/small.png . 
$ docker cp f19e2f06eabb:/deep-learning-from-scratch-2/ch03/trainer.png . 

第1章

bash
(base) root@f19e2f06eabb:/# ls
bin  boot  deep-learning-from-scratch-2  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
(base) root@f19e2f06eabb:/# cd deep-learning-from-scratch-2/
(base) root@f19e2f06eabb:/deep-learning-from-scratch-2# ls
LICENSE.md  README.md  ch01  ch02  ch03  ch04  ch05  ch06  ch07  ch08  common  dataset
(base) root@f19e2f06eabb:/deep-learning-from-scratch-2# cd ch01
(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch01# ls
forward_net.py	show_spiral_dataset.py	train.py  train_custom_loop.py	two_layer_net.py

forward_net.py

(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch01# python forward_net.py
[[-3.75987607  2.88184767  0.70790565]
 [-4.00541319  2.45471769  1.69667098]
 [-3.86374037  2.09590372  2.05944503]
 [-3.2456851   2.20352841  0.84411808]
 [-3.54065719  2.17029004  1.46937473]
 [-4.00934517  2.25979763  1.99581236]
 [-3.9925953   2.64020227  1.42864389]
 [-3.64107153  2.73896715  0.71204338]
 [-3.96827961  2.6421512   1.40249969]
 [-3.77412466  3.0798037   0.35972095]]

two_layer_net.py

(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch01# python two_layer_net.py 

show_spiral_dataset.py

# python show_spiral_dataset.py 
x (300, 2)
t (300, 3)

編集したpythonファイル

  1. PNGファイル出力のおまじない:2行追記
import matplotlib as mpl
mpl.use('Agg')
  1. ファイル出力操作:2行追記、1行注釈化
fig = plt.figure()
#plt.show()
fig.savefig('spiral.png')

結果はspiral.pngファイルとして出力
spiral.png

show_spiral_dataset.py
# coding: utf-8
import sys
sys.path.append('..')  # 親ディレクトリのファイルをインポートするための設定
from dataset import spiral
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt

fig = plt.figure()
x, t = spiral.load_data()
print('x', x.shape)  # (300, 2)
print('t', t.shape)  # (300, 3)

# データ点のプロット
N = 100
CLS_NUM = 3
markers = ['o', 'x', '^']
for i in range(CLS_NUM):
    plt.scatter(x[i*N:(i+1)*N, 0], x[i*N:(i+1)*N, 1], s=40, marker=markers[i])
#plt.show()
fig.savefig('spiral.png')

##train_custom_loop.py

docker
(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch01# python train_custom_loop.py 
| epoch 1 |  iter 10 / 10 | loss 1.13
| epoch 2 |  iter 10 / 10 | loss 1.13
| epoch 3 |  iter 10 / 10 | loss 1.12
| epoch 4 |  iter 10 / 10 | loss 1.12
| epoch 5 |  iter 10 / 10 | loss 1.11
| epoch 6 |  iter 10 / 10 | loss 1.14
| epoch 7 |  iter 10 / 10 | loss 1.16
| epoch 8 |  iter 10 / 10 | loss 1.11
| epoch 9 |  iter 10 / 10 | loss 1.12

(中略)

| epoch 299 |  iter 10 / 10 | loss 0.11
| epoch 300 |  iter 10 / 10 | loss 0.11
(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch01# ls
__pycache__  forward_net.py  show_spiral_dataset.py  train.py  train_c1.png  train_c2.png  train_custom_loop.py  two_layer_net.py

編集したpythonファイル

  1. PNGファイル出力のおまじない
    import matplotlib as mpl
    mpl.use('Agg')
  2. ファイル出力操作(1)
fig = plt.figure()
#plt.show()
fig.savefig('train_c1.png')

結果をtrain_c1.pngとして出力

train_c1.png

  1. ファイル出力操作(2)
fig2 = plt.figure()
#plt.show()
fig2.savefig('train_c2.png')

結果をtrain_c2.pngとして出力
train_c2.png

train_custom_loop.py
# coding: utf-8
import sys
sys.path.append('..')  # 親ディレクトリのファイルをインポートするための設定
import numpy as np
from common.optimizer import SGD
from dataset import spiral
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
from two_layer_net import TwoLayerNet


# ハイパーパラメータの設定
max_epoch = 300
batch_size = 30
hidden_size = 10
learning_rate = 1.0

x, t = spiral.load_data()
model = TwoLayerNet(input_size=2, hidden_size=hidden_size, output_size=3)
optimizer = SGD(lr=learning_rate)

# 学習で使用する変数
data_size = len(x)
max_iters = data_size // batch_size
total_loss = 0
loss_count = 0
loss_list = []

for epoch in range(max_epoch):
    # データのシャッフル
    idx = np.random.permutation(data_size)
    x = x[idx]
    t = t[idx]

    for iters in range(max_iters):
        batch_x = x[iters*batch_size:(iters+1)*batch_size]
        batch_t = t[iters*batch_size:(iters+1)*batch_size]

        # 勾配を求め、パラメータを更新
        loss = model.forward(batch_x, batch_t)
        model.backward()
        optimizer.update(model.params, model.grads)

        total_loss += loss
        loss_count += 1

        # 定期的に学習経過を出力
        if (iters+1) % 10 == 0:
            avg_loss = total_loss / loss_count
            print('| epoch %d |  iter %d / %d | loss %.2f'
                  % (epoch + 1, iters + 1, max_iters, avg_loss))
            loss_list.append(avg_loss)
            total_loss, loss_count = 0, 0


# 学習結果のプロット
fig = plt.figure()
plt.plot(np.arange(len(loss_list)), loss_list, label='train')
plt.xlabel('iterations (x10)')
plt.ylabel('loss')
#plt.show()
fig.savefig('train_c1.png')

# 境界領域のプロット
fig2 = plt.figure()
h = 0.001
x_min, x_max = x[:, 0].min() - .1, x[:, 0].max() + .1
y_min, y_max = x[:, 1].min() - .1, x[:, 1].max() + .1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
X = np.c_[xx.ravel(), yy.ravel()]
score = model.predict(X)
predict_cls = np.argmax(score, axis=1)
Z = predict_cls.reshape(xx.shape)
plt.contourf(xx, yy, Z)
plt.axis('off')

# データ点のプロット
x, t = spiral.load_data()
N = 100
CLS_NUM = 3
markers = ['o', 'x', '^']
for i in range(CLS_NUM):
    plt.scatter(x[i*N:(i+1)*N, 0], x[i*N:(i+1)*N, 1], s=40, marker=markers[i])
#plt.show()
fig2.savefig('train_c2.png')

ch03/train.py

(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch03# python train.py
| epoch 1 |  iter 1 / 2 | time 0[s] | loss 1.95
| epoch 2 |  iter 1 / 2 | time 0[s] | loss 1.95
| epoch 3 |  iter 1 / 2 | time 0[s] | loss 1.95
| epoch 4 |  iter 1 / 2 | time 0[s] | loss 1.95
| epoch 5 |  iter 1 / 2 | time 0[s] | loss 1.95
| epoch 6 |  iter 1 / 2 | time 0[s] | loss 1.95
| epoch 7 |  iter 1 / 2 | time 0[s] | loss 1.95
| epoch 8 |  iter 1 / 2 | time 0[s] | loss 1.94
| epoch 9 |  iter 1 / 2 | time 0[s] | loss 1.94
| epoch 10 |  iter 1 / 2 | time 0[s] | loss 1.94

(中略)

| epoch 991 |  iter 1 / 2 | time 0[s] | loss 0.94
| epoch 992 |  iter 1 / 2 | time 0[s] | loss 0.33
| epoch 993 |  iter 1 / 2 | time 0[s] | loss 0.96
| epoch 994 |  iter 1 / 2 | time 0[s] | loss 0.61
| epoch 995 |  iter 1 / 2 | time 0[s] | loss 0.49
| epoch 996 |  iter 1 / 2 | time 0[s] | loss 0.48
| epoch 997 |  iter 1 / 2 | time 0[s] | loss 0.92
| epoch 998 |  iter 1 / 2 | time 0[s] | loss 0.65
| epoch 999 |  iter 1 / 2 | time 0[s] | loss 0.63
| epoch 1000 |  iter 1 / 2 | time 0[s] | loss 0.63
you [-0.85186464  0.8873791   0.9535413   1.759501   -0.86705554]
say [ 1.1053841 -1.0883542 -1.052522   1.2985277  1.1104386]
goodbye [-1.0607617   1.0740693   1.0050163  -0.34769127 -1.0925001 ]
and [ 1.0371324 -0.8034061 -1.2292709  1.336546   0.9448045]
i [-1.0493721   1.0505022   1.0150882  -0.34115607 -1.1023822 ]
hello [-0.86085826  0.88232267  0.95443195  1.7587373  -0.84508234]
. [ 0.80664647 -1.1676135  -0.24818163  0.68286717  0.9483339 ]

trainer.png

編集するのはこのファイルではなく、common/trainer.py

common/trainer.py

ここまでと同様の処理。
2箇所def plotがあるのでそれぞれに処理を追記。
train.pyは一方しか呼んでいないみたい。

第二章

count_method_big.py

(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch02# python count_method_big.py 
counting  co-occurrence ...
calculating PPMI ...
1.0% done
2.0% done
3.0% done
4.0% done
5.0% done
6.0% done
7.0% done
8.0% done
9.0% done
10.0% done

(中略)

91.0% done
92.0% done
93.0% done
94.0% done
95.0% done
96.0% done
97.0% done
98.0% done
99.0% done
100.0% done
calculating SVD ...

[query] you
 i: 0.6666895151138306
 anybody: 0.5807172060012817
 we: 0.5673905611038208
 else: 0.5443344116210938
 do: 0.5044347047805786

[query] year
 quarter: 0.6834844350814819
 month: 0.6641101241111755
 earlier: 0.6461527347564697
 last: 0.625231146812439
 next: 0.6001166105270386

[query] car
 luxury: 0.6281501054763794
 auto: 0.5573192834854126
 vehicle: 0.5489078760147095
 truck: 0.5140106081962585
 corsica: 0.5129688382148743

[query] toyota
 motor: 0.702085018157959
 motors: 0.6883779764175415
 nissan: 0.6658307909965515
 honda: 0.625495433807373
 lexus: 0.5883824825286865

most_similar.py

(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch02# python most_similar.py 

[query] you
 goodbye: 0.7071067691154799
 i: 0.7071067691154799
 hello: 0.7071067691154799
 say: 0.0
 and: 0.0

ppmi.py

(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch02# python ppmi.py 
covariance matrix
[[0 1 0 0 0 0 0]
 [1 0 1 0 1 1 0]
 [0 1 0 1 0 0 0]
 [0 0 1 0 1 0 0]
 [0 1 0 1 0 0 0]
 [0 1 0 0 0 0 1]
 [0 0 0 0 0 1 0]]
--------------------------------------------------
PPMI
[[0.    1.807 0.    0.    0.    0.    0.   ]
 [1.807 0.    0.807 0.    0.807 0.807 0.   ]
 [0.    0.807 0.    1.807 0.    0.    0.   ]
 [0.    0.    1.807 0.    1.807 0.    0.   ]
 [0.    0.807 0.    1.807 0.    0.    0.   ]
 [0.    0.807 0.    0.    0.    0.    2.807]
 [0.    0.    0.    0.    0.    2.807 0.   ]]

similarity.py

``
(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch02# python similarity.py
0.7071067691154799

### show_ptb.py

(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch02# python show_ptb.py
corpus size: 929589
corpus[:30]: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29]

id_to_word[0]: aer
id_to_word[1]: banknote
id_to_word[2]: berlitz

word_to_id['car']: 3856
word_to_id['happy']: 4428
word_to_id['lexus']: 7426

## chap06

```python:ch06/rnn_gradient_graph.py
# coding: utf-8
import numpy as np
#import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt


N = 2  # ミニバッチサイズ
H = 3  # 隠れ状態ベクトルの次元数
T = 20  # 時系列データの長さ

dh = np.ones((N, H))

np.random.seed(3)

Wh = np.random.randn(H, H)
#Wh = np.random.randn(H, H) * 0.5
fig=plt.figure()

norm_list = []
for t in range(T):
    dh = np.dot(dh, Wh.T)
    norm = np.sqrt(np.sum(dh**2)) / N
    norm_list.append(norm)

print(norm_list)

# グラフの描画
#fig=plt.figure()
plt.plot(np.arange(len(norm_list)), norm_list)
plt.xticks([0, 4, 9, 14, 19], [1, 5, 10, 15, 20])
plt.xlabel('time step')
plt.ylabel('norm')
#fig=plt.figure()
#plt.show()
fig.savefig('rnn_gra.png')

rnn_gra.png

#Wh = np.random.randn(H, H)
Wh = np.random.randn(H, H) * 0.5

rnn_gra2.png

# python clip_grads.py 
before: [7.28449187 5.75706778 9.10440563 6.08134942 8.62414161 0.99632405
 3.07822728 7.58228078 9.15052157]
after: [1.43684997 1.13556894 1.79582395 1.19953278 1.70109293 0.19652272
 0.60717355 1.49558818 1.80492022]

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

ここから下は、上記のpullしていただいたdockerをどういう方針で、どういう手順で作ったかを記録します。
上記のdockerを利用する上での参考資料です。本の続きを実行する上では必要ありません。
自力でdocker/anacondaを構築する場合の手順になります。
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
Digest: sha256:e07b9ca98ac1eeb1179dbf0e0bbcebd87701f8654878d6d8ce164d71746964d1
Status: Image is up to date for continuumio/anaconda3:latest
OgawaKiyoshi-no-MacBook-Pro:docker-toppers ogawakiyoshi$ docker run -it continuumio/anaconda3 /bin/bash

## apt

```shell-session
(base) root@f19e2f06eabb:/# apt update

(base) root@f19e2f06eabb:/# apt install -y procps vim apt-utils

Deep Learning2

(base) root@f19e2f06eabb:/# git clone https://github.com/oreilly-japan/deep-learning-from-scratch-2.git
Cloning into 'deep-learning-from-scratch-2'...
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 320 (delta 4), reused 3 (delta 3), pack-reused 303
Receiving objects: 100% (320/320), 7.51 MiB | 1.93 MiB/s, done.
Resolving deltas: 100% (178/178), done.

pip

(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch01# pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 2.0MB/s 
distributed 1.21.8 requires msgpack, which is not installed.
Installing collected packages: pip
  Found existing installation: pip 10.0.1
    Uninstalling pip-10.0.1:
      Successfully uninstalled pip-10.0.1
Successfully installed pip-18.0

pyqt5

(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch01# pip install pyqt5
Collecting pyqt5
  Downloading https://files.pythonhosted.org/packages/3a/c7/4a9bec78c864051051b41b4cc76672ecc232e6dc7dbb91a5f8ff6f20ff64/PyQt5-5.11.2-5.11.1-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl (117.9MB)
    100% |████████████████████████████████| 117.9MB 311kB/s 
Collecting PyQt5_sip<4.20,>=4.19.11 (from pyqt5)
  Downloading https://files.pythonhosted.org/packages/d7/db/06ad1f62a1f80a5df639c322066f03db381c1a6322c02087e75092427838/PyQt5_sip-4.19.12-cp36-cp36m-manylinux1_x86_64.whl (66kB)
    100% |████████████████████████████████| 71kB 30kB/s 
distributed 1.21.8 requires msgpack, which is not installed.
Installing collected packages: PyQt5-sip, pyqt5
Successfully installed PyQt5-sip-4.19.12 pyqt5-5.11.2

apt install libgl1-mesa-dev

(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch01# apt install -y libgl1-mesa-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libdrm-amdgpu1 libdrm-dev libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa
  libllvm3.9 libpciaccess0 libpthread-stubs0-dev libsensors4 libtxc-dxtn-s2tc libx11-dev libx11-doc libx11-xcb-dev libx11-xcb1
  libxau-dev libxcb-dri2-0 libxcb-dri2-0-dev libxcb-dri3-0 libxcb-dri3-dev libxcb-glx0 libxcb-glx0-dev libxcb-present-dev
  libxcb-present0 libxcb-randr0 libxcb-randr0-dev libxcb-render0 libxcb-render0-dev libxcb-shape0 libxcb-shape0-dev libxcb-sync-dev
  libxcb-sync1 libxcb-xfixes0 libxcb-xfixes0-dev libxcb1-dev libxdamage-dev libxdamage1 libxdmcp-dev libxext-dev libxfixes-dev
  libxfixes3 libxshmfence-dev libxshmfence1 libxxf86vm-dev libxxf86vm1 mesa-common-dev x11proto-core-dev x11proto-damage-dev
  x11proto-dri2-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev x11proto-xf86vidmode-dev
  xorg-sgml-doctools xtrans-dev
Suggested packages:
  pciutils lm-sensors libxcb-doc libxext-doc
The following NEW packages will be installed:
  libdrm-amdgpu1 libdrm-dev libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libgl1-mesa-dev libgl1-mesa-dri libgl1-mesa-glx
  libglapi-mesa libllvm3.9 libpciaccess0 libpthread-stubs0-dev libsensors4 libtxc-dxtn-s2tc libx11-dev libx11-doc libx11-xcb-dev
  libx11-xcb1 libxau-dev libxcb-dri2-0 libxcb-dri2-0-dev libxcb-dri3-0 libxcb-dri3-dev libxcb-glx0 libxcb-glx0-dev libxcb-present-dev
  libxcb-present0 libxcb-randr0 libxcb-randr0-dev libxcb-render0 libxcb-render0-dev libxcb-shape0 libxcb-shape0-dev libxcb-sync-dev
  libxcb-sync1 libxcb-xfixes0 libxcb-xfixes0-dev libxcb1-dev libxdamage-dev libxdamage1 libxdmcp-dev libxext-dev libxfixes-dev
  libxfixes3 libxshmfence-dev libxshmfence1 libxxf86vm-dev libxxf86vm1 mesa-common-dev x11proto-core-dev x11proto-damage-dev
  x11proto-dri2-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev x11proto-xf86vidmode-dev
  xorg-sgml-doctools xtrans-dev
0 upgraded, 61 newly installed, 0 to remove and 25 not upgraded.
Need to get 24.4 MB of archives.
After this operation, 193 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian stretch/main amd64 libdrm2 amd64 2.4.74-1 [36.2 kB]

3.docker hub 登録

ここからは、新たにソフトを導入したdockerを自分のhubに登録する方法です。
ご自身で何かソフトウェアを導入されたら、ぜひhubに登録することをお勧めします。
続きの作業を誰かに依頼したり、エラーがでてわからなくなったときに、対処方法を問い合わせるのにも役立ちます。

$ docker ps 
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                            NAMES
f19e2f06eabb        continuumio/anaconda3        "/usr/bin/tini -- /b…"   3 hours ago         Up 3 hours        

$ docker commit f19e2f06eabb kaizenjapan/anaconda-deep

$ docker push kaizenjapan/anaconda-deep:latest

参考資料(reference)

dockerで機械学習(python:anaconda)「直感Deep Learning」Antonio Gulli、Sujit Pal 第1章,第2章
https://qiita.com/kaizen_nagoya/items/483ae708c71c88419c32

OpenCVをPythonで動かそうとしてlibGL.soが無いって言われたけど解決した。
https://qiita.com/toshitanian/items/5da24c0c0bd473d514c8

サーバサイドにおけるmatplotlibによる作図Tips
https://qiita.com/TomokIshii/items/3a26ee4453f535a69e9e

Dockerでホストとコンテナ間でのファイルコピー
https://qiita.com/gologo13/items/7e4e404af80377b48fd5

Docker for Mac でファイル共有を利用する
https://qiita.com/seijimomoto/items/1992d68de8baa7e29bb5

「名古屋の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

文書履歴(document history)

ver. 0.10 初稿 20180925 昼
ver. 0.11 hub登録訂正 20180925 夕方
ver. 0.12 ファイル複写追記 20180925 深夜
ver. 0.13 出力細分化 20180926 零時
ver. 0.14 誤記訂正 20180926 朝
ver. 0.15 表題変更 20180927 朝
ver. 0.16 ch06 add 20190117
ver. 0.17 補足 20200317

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

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

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

Thank you very much for reading to the last sentence.

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

10
12
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
10
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?