LoginSignup
4
7

dockerで機械学習(5) with anaconda(5)「はじめてのPython AIプログラミング」金城俊哉 著

Last updated at Posted at 2018-10-05

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

はじめてのPython AIプログラミング 金城俊哉 978-4-7980-4485-9 2016
https://www.shuwasystem.co.jp/products/7980html/4485.html

a.jpg

サンプルファイルのダウンロード
ftp://ftp2.shuwasystem.co.jp/pub/book/4485/sample.zip

正誤表
ftp://ftp2.shuwasystem.co.jp/pub/book/4485/Seigohyo.pdf

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

2. docker

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

docker pull and run

$ docker pull kaizenjapan/anaconda-pythonai

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

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

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

ファイル共有または複写

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

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

コマンドの説明

ls

ファイル一覧

cd

change directory

python

拡張子.pyのpythonファイルを指定すれば、python記述を順次実行する。
`

フォルダを実行しようとすると次のエラーがでる。

docker
(base) root@6f4c91ae627f:/sample/chap05/07# python english_words1/
/opt/conda/bin/python: can't find '__main__' module in 'english_words1/'

ごめんなさい.フォルダだった。

以下、うまく動かなかった例を記述する。理由はそれぞれ調査中。

sample

(base) root@6f4c91ae627f:/# cd sample
(base) root@6f4c91ae627f:/sample# ls
chap02	chap03	chap04	chap05	chap06	chap07
(base) root@6f4c91ae627f:/sample# cd chap02
(base) root@6f4c91ae627f:/sample/chap02# ls
03  04
(base) root@6f4c91ae627f:/sample/chap02# cd 03
(base) root@6f4c91ae627f:/sample/chap02/03# ls
hello.py  self_introduction.py
(base) root@6f4c91ae627f:/sample/chap02/03# python hello.py
あたしはレイです

第3章

# cd ../chap03/03
(base) root@6f4c91ae627f:/sample/chap03/03# python ray_answer_problem.py 
問題はナニ?>累乗
累乗を計算するネ。値は?--->3 
指数は?--->9
Traceback (most recent call last):
  File "ray_answer_problem.py", line 7, in <module>
    ans = int(math.pow(int(num),
ValueError: invalid literal for int() with base 10: '\udcef3'

第3章04

while_break.py

(base) root@6f4c91ae627f:/sample/chap03/04# python while_break.py
何か入力して->Traceback (most recent call last):
  File "while_break.py", line 2, in <module>
    str = input('何か入力して->')
EOFError

###ray_answer_problem_roop.py

(base) root@6f4c91ae627f:/sample/chap03/04# python ray_answer_problem_roop.py 
問題はナニカナ?>累乗
累乗を計算するネ。値は?--->3
指数は?--->9
19683
問題はナニカナ?>累乗
累乗を計算するネ。値は?--->999
指数は?--->999999999
Traceback (most recent call last):
  File "ray_answer_problem_roop.py", line 15, in <module>
    int(index)))
OverflowError: math range error

第4章

第4章03

(base) root@6f4c91ae627f:/sample/chap04/03# python answer_prog_past.py 
動詞を入力してネ>run
現在分詞はコレ->running
過去形はコレ  ->ran-run
動詞を入力してネ>do
Traceback (most recent call last):
  File "answer_prog_past.py", line 39, in <module>
    elif (present[-3] == 'a' or \
IndexError: string index out of range

第4章04

(base) root@6f4c91ae627f:/sample/chap04/04# python Ray_answer_English_writing.py 
第1文型の例文を作るネ
主語(S)は?>i
動詞(V)は?>do
i do.
第2文型の例文を作るネ
主語(S)は?>you
動詞(V)は?>do
補語(C)は?>nothing
you do nothing.
第3文型の例文を作るネ
主語(S)は?>she
動詞(V)は?>do
目的語(O)は?>it
she do it.
第4文型の例文を作るネ
主語(S)は?>he
動詞(V)は?>do
間接目的語(IO)は?>it
直接目的語(DO)は?>broken
he do it broken.
第5文型の例文を作るネ
主語(S)は?>it
動詞(V)は?>do
目的語(O)は?>that
補語(C)は?>broken
it do that broken.

str1.py

(base) root@6f4c91ae627f:/sample/chap04# python str1.py 
  File "str1.py", line 13
    elif present == 'visit' or\
       ^
SyntaxError: invalid syntax

###第5章07

(base) root@6f4c91ae627f:/sample/chap05/07/ray_answer_meaning# python ray_answer_meaning.py 

なにもしない

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 Learning git

(base) root@6f4c91ae627f:/# wget ftp://ftp2.shuwasystem.co.jp/pub/book/4485/sample.zip
--2018-10-05 06:59:51--  ftp://ftp2.shuwasystem.co.jp/pub/book/4485/sample.zip
           => ‘sample.zip’
Resolving ftp2.shuwasystem.co.jp (ftp2.shuwasystem.co.jp)... 153.150.104.114
Connecting to ftp2.shuwasystem.co.jp (ftp2.shuwasystem.co.jp)|153.150.104.114|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /pub/book/4485 ... done.
==> SIZE sample.zip ... 149938
==> PASV ... done.    ==> RETR sample.zip ... done.
Length: 149938 (146K) (unauthoritative)

sample.zip          100%[===================>] 146.42K  57.6KB/s    in 2.5s    

2018-10-05 06:59:55 (57.6 KB/s) - ‘sample.zip’ saved [149938]

(base) root@6f4c91ae627f:/# ls
bin   dev  home  lib64	mnt  proc  run	       sbin  sys  usr
boot  etc  lib	 media	opt  root  sample.zip  srv   tmp  var
(base) root@6f4c91ae627f:/# apt-get install unzip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  zip
The following NEW packages will be installed:
  unzip
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 170 kB of archives.
After this operation, 547 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian stretch/main amd64 unzip amd64 6.0-21 [170 kB]
Fetched 170 kB in 1s (113 kB/s) 
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76, <> line 1.)
debconf: falling back to frontend: Readline
Selecting previously unselected package unzip.
(Reading database ... 14672 files and directories currently installed.)
Preparing to unpack .../unzip_6.0-21_amd64.deb ...
Unpacking unzip (6.0-21) ...
Processing triggers for mime-support (3.60) ...
Setting up unzip (6.0-21) ...
(base) root@6f4c91ae627f:/# ls
bin   dev  home  lib64	mnt  proc  run	       sbin  sys  usr
boot  etc  lib	 media	opt  root  sample.zip  srv   tmp  var
(base) root@6f4c91ae627f:/# unzip sample.zip
Archive:  sample.zip
   creating: sample/chap02/
   creating: sample/chap02/03/
 extracting: sample/chap02/03/hello.py  
 extracting: sample/chap02/03/self_introduction.py  

(中略)
 
 extracting: sample/chap07/09/img1.gif  
  inflating: sample/chap07/09/ray.py  
  inflating: sample/chap07/09/ray_answer_and_learning.py  
  inflating: sample/chap07/09/ray_form.py  
  inflating: sample/chap07/09/responder.py  
  inflating: sample/chap07/Thumbs.db  
(base) root@6f4c91ae627f:/# ls
bin   dev  home  lib64	mnt  proc  run	   sample.zip  srv  tmp  var
boot  etc  lib	 media	opt  root  sample  sbin        sys  usr

pip

# 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 110kB/s 
twisted 18.7.0 requires PyHamcrest>=1.9.0, 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

3.docker hub 登録

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

$ docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS               NAMES
6f4c91ae627f        continuumio/anaconda3   "/usr/bin/tini -- /b…"   34 minutes ago      Up 34 minutes                           hungry_pare

$ docker commit 6f4c91ae627f kaizenjapan/anaconda-pythonai
sha256:a692f785b0411d41c7599dde188d3492472426e839bacd22fd298de435f2a929

$ docker push kaizenjapan/anaconda-pythonai
The push refers to repository [docker.io/kaizenjapan/anaconda-pythonai]
2d09c26f85b0: Pushed 
513109f92bd0: Mounted from continuumio/anaconda3 
443496790d0d: Mounted from continuumio/anaconda3 
64e142099cde: Mounted from continuumio/anaconda3 
b28ef0b6fef8: Mounted from continuumio/anaconda3 
latest: digest: sha256:9d55effe603c26f4dd272c5a375695b21fc8292dd23b9edf18f5ef8108f5a773 size: 1378

参考資料(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 初稿 20181005 朝
ver. 0.11 docker上のLinuxコマンド説明, wgetでsample取得 追記 20181005 夕
ver. 0.12 docker pull kaizenjapan/anaconda-pythonai の誤記訂正 20181010
ver. 0.13 参考文献、標題 追記 20181014
ver. 0.14 apt-getをaptに20180304

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

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

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

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