#1.すぐに利用したい方へ(as soon as)
「ゼロから作るDeep Learning」斎藤 康毅 著
Pythonで学ぶディープラーニングの理論と実装
<この項は書きかけです。順次追記します。>
docker
dockerを導入し、Windows, Macではdockerを起動しておいてください。
Windowsでは、BiosでIntel Virtualizationをenableにしないとdockerが起動しない場合があります。
また、セキュリティの警告などが出ることがあります。
docker pull and run
$ docker pull kaizenjapan/anaconda-deep-1
$ docker run -it kaizenjapan/anaconda-deep-1 /bin/bash
ファイルを共有したい場合(Macintosh)
$ docker run -v /Users/{user name}/Documents/workspace:/home/data -it kaizenjapan/anaconda-deep-1 /bin/bash
ファイルを共有したい場合(Windows)
$ docker run -v /c/Users/{user name}/Documents/workspace:/home/data -it kaizenjapan/anaconda-deep-1 /bin/bash
以下のshell sessionでは
(base) root@f19e2f06eabb:/#は入力促進記号(comman prompt)です。実際には数字の部分が違うかもしれません。この行の#の右側を入力してください。
それ以外の行は出力です。出力にエラー、違いがあれば、コメント欄などでご連絡くださると幸いです。
それぞれの章のフォルダに移動します。
dockerの中と、dockerを起動したOSのシェルとが表示が似ている場合には、どちらで捜査しているか間違えることがあります。dockerの入力促進記号(comman prompt)に気をつけてください。
ファイル共有または複写
dockerとdockerを起動したOSでは、ファイル共有をするか、ファイル複写するかして、生成したファイルをブラウザ等表示させてください。参考文献欄にやり方のURLを記載しています。
複写の場合は、dockerを起動したOS側コマンドを実行しました。お使いのdockerの番号で置き換えてください。複写したファイルをブラウザで表示し内容確認しました。
第1章
(base) root@b28c065c8b45:/# ls
bin boot deep-learning-from-scratch dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
(base) root@b28c065c8b45:/# cd deep-learning-from-scratch/
(base) root@b28c065c8b45:/deep-learning-from-scratch# ls
LICENSE.md README.md ch01 ch02 ch03 ch04 ch05 ch06 ch07 ch08 common dataset
(base) root@b28c065c8b45:/deep-learning-from-scratch# cd ch01
(base) root@b28c065c8b45:/deep-learning-from-scratch/ch01# ls
hungry.py img_show.py man.py simple_graph.py sin_cos_graph.py sin_graph.py
ch01/man.py
(base) root@b28c065c8b45:/deep-learning-from-scratch/ch01# python man.py
Initilized!
Hello David!
Good-bye David!
python sin_cos_graph.py
(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch01# python sin_cos_graph.py
img_show.py
# (base) root@b28c065c8b45:/deep-learning-from-scratch/ch01# python img_show.py
編集したpythonファイル
- PNGファイル出力のおまじない:2行追記
import matplotlib as mpl
mpl.use('Agg')
- ファイル出力操作:2行追記、1行注釈化
fig = plt.figure()
#plt.show()
fig.savefig('img.png')
結果はimg.pngファイルとして出力
# 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
(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ファイル
- PNGファイル出力のおまじない
import matplotlib as mpl
mpl.use('Agg') - ファイル出力操作(1)
fig = plt.figure()
#plt.show()
fig.savefig('train_c1.png')
結果をtrain_c1.pngとして出力
- ファイル出力操作(2)
fig2 = plt.figure()
#plt.show()
fig2.savefig('train_c2.png')
# 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 ]
編集するのはこのファイルではなく、common/trainer.py
###common/trainer.py
ここまでと同様の処理。
2箇所def plotがあるのでそれぞれに処理を追記。
train.pyは一方しか呼んでいないみたい。
#第二章
##ch02/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
ch02/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
ch02/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. ]]
##ch02/similarity.py
(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch02# python similarity.py
0.7071067691154799
ch02/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
ch04/gradient_2d.py
(base) root@b28c065c8b45:/deep-learning-from-scratch/ch04# python gradient_2d.py
No handles with labels found to put in legend.
#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
$ docker run -it continuumio/anaconda3 /bin/bash
apt
(base) root@f19e2f06eabb:/# apt update
(base) root@f19e2f06eabb:/# apt install -y procps vim apt-utils
Deep Learning git
(base) root@f19e2f06eabb:/# git clone https://github.com/oreilly-japan/deep-learning-from-scratch.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
b28c065c8b45 continuumio/anaconda3 "/usr/bin/tini -- /b…" 21 hours ago Up 21 hours elegant_gates
$ docker commit b28c065c8b45 kaizenjapan/anaconda-deep-1
sha256:2d26c8621bf9cc3c2400477a9db98bb21a953fdbe53c22da395ca4a80b15261f
$ docker push kaizenjapan/anaconda-deep-1
The push refers to repository [docker.io/kaizenjapan/anaconda-deep-1]
b6d479cc3a0f: Pushing [==> ] 68.41MB/1.453GB
6410333f34cf: Mounted from kaizenjapan/anaconda-keras-ten
cf342e34eca3: Mounted from kaizenjapan/anaconda-keras-ten
cea95006e36a: Mounted from kaizenjapan/anaconda-keras-ten
0f3a12fef684: Mounted from kaizenjapan/anaconda-keras-ten
参考資料(reference)
なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2
dockerで機械学習(2)with anaconda(2)「ゼロから作るDeep Learning2自然言語処理編」斎藤 康毅 著
https://qiita.com/kaizen_nagoya/items/3b80dfc76933cea522c6
dockerで機械学習(3)with anaconda(3)「直感Deep Learning」Antonio Gulli、Sujit Pal 第1章,第2章
https://qiita.com/kaizen_nagoya/items/483ae708c71c88419c32
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
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 初稿 20180926 昼
ver. 0.11 docker push 追記 20180927 午前
ver. 0.12 参考文献追記 20181019
ver. 0.13 見出し項目整理 20181024
ver. 0.14 ありがとう追記 20230423
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.