TensorFlowを試してみる(1)

ふとTensorFlowを試してみたくなりました。(そのためにDocker環境作ってました)

で、なかなかよさげなTensorFlowのチュートリアルを発見しました。

TensorFlow入門(https://deepinsider.jp/tutor/introtensorflow

こちらを参考に進めてみます。

第2回の環境構築でつまづきましたので、そのメモです。

環境は、冒頭に書いたとおり、TensorFlowを試すためにDockerの環境を作ったので、Docker前提で進めます。(Docker環境にしたのは、現状のLinuxMintの環境をできるだけ壊さないためです)

で、TensorFlowの公式サイト(https://www.tensorflow.org/install/)を参考にTensorFlowコンテナをインストール、起動します。

~/docker$ cd tensorflow/
~/docker/tensorflow$ 
~/docker$ cd tensorflow/
~/docker/tensorflow$ docker pull tensorflow/tensorflow 
Using default tag: latest
latest: Pulling from tensorflow/tensorflow
7b722c1070cd: Pull complete 
(中略)
9c2312dbc5d7: Pull complete 
Digest: sha256:40844012558fe881ec58faf1627fd4bb3f64fe9d46a2fd8af70f139244cfb538
Status: Downloaded newer image for tensorflow/tensorflow:latest
~/docker/tensorflow$ docker run -u $(id -u):$(id -g) -it -p 8888:8888 tensorflow/tensorflow

________                               _______________                
___  __/__________________________________  ____/__  /________      __
__  /  _  _ \_  __ \_  ___/  __ \_  ___/_  /_   __  /_  __ \_ | /| / /
_  /   /  __/  / / /(__  )/ /_/ /  /   _  __/   _  / / /_/ /_ |/ |/ / 
/_/    \___//_/ /_//____/ \____//_/    /_/      /_/  \____/____/|__/


You are running this container as user with ID 1000 and group 1000,
which should map to the ID and group for your user on the Docker host. Great!

tf-docker / >

公式サイトの冒頭の起動方法では、まず docker run コマンドに -u オプションをつけろ、と警告が出ます。上記では「-u $(id -u):$(id -g)」を付けています。
しかし、この環境では python のバージョンを確認すると2.7でした。python3とするためにコンテナのタグに-py3を付けます。

~/docker/tensorflow$ docker run -u $(id -u):$(id -g) -it -p 8888:8888 tensorflow/tensorflow:latest-py3 python
Unable to find image 'tensorflow/tensorflow:latest-py3' locally
latest-py3: Pulling from tensorflow/tensorflow
7b722c1070cd: Already exists 
(中略)
3fce84e77cad: Pull complete 
Digest: sha256:7309cfcdc1adbde8925f8cb301f802053bfa15d69a6605c8b73fe19ce9ab2a78
Status: Downloaded newer image for tensorflow/tensorflow:latest-py3
Python 3.5.2 (default, Nov 12 2018, 13:43:14) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> sess = tf.InteractiveSession()
2019-04-19 20:30:24.944775: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2793680000 Hz
2019-04-19 20:30:24.945045: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x37004b0 executing computations on platform Host. Devices:
2019-04-19 20:30:24.945079: I tensorflow/compiler/xla/service/service.cc:158]   StreamExecutor device (0): <undefined>, <undefined>
>>> message = tf.constant('Hello, Tensorflow!')
>>> message.eval()
b'Hello, Tensorflow!'
>>> sess.close()
>>>

python3での対話モードでの確認もエラーは出ませんでした。が、こんどは Jupyter Notebookでハマります。結局、ホスト側でJupyter Notebookのディレクトリをまず作ります。

~/docker/tensorflow$ mkdir ~/notebooks

その上で、Jupyter Notebookに対応したイメージを引っ張ってきて起動します。

~/docker/tensorflow$ docker run -u $(id -u):$(id -g) -it --rm -v $(realpath ~/notebooks):/tf -p 8888:8888 tensorflow/tensorflow:latest-py3-jupyter
Unable to find image 'tensorflow/tensorflow:latest-py3-jupyter' locally
latest-py3-jupyter: Pulling from tensorflow/tensorflow
7b722c1070cd: Pull complete 
(中略)
12156a969bcb: Pull complete 
Digest: sha256:aaf427d8590ae2935f6c9d39851380402d7ce422b7e26315f73df59f774614f3
Status: Downloaded newer image for tensorflow/tensorflow:latest-py3-jupyter

________                               _______________                
___  __/__________________________________  ____/__  /________      __
__  /  _  _ \_  __ \_  ___/  __ \_  ___/_  /_   __  /_  __ \_ | /| / /
_  /   /  __/  / / /(__  )/ /_/ /  /   _  __/   _  / / /_/ /_ |/ |/ / 
/_/    \___//_/ /_//____/ \____//_/    /_/      /_/  \____/____/|__/


You are running this container as user with ID 1000 and group 1000,
which should map to the ID and group for your user on the Docker host. Great!

[I 21:04:46.052 NotebookApp] Writing notebook server cookie secret to /.local/share/jupyter/runtime/notebook_cookie_secret
/usr/local/lib/python3.5/dist-packages/IPython/paths.py:68: UserWarning: IPython parent '/' is not a writable location, using a temp directory.
  " using a temp directory.".format(parent))
[I 21:04:46.328 NotebookApp] Serving notebooks from local directory: /tf
[I 21:04:46.328 NotebookApp] The Jupyter Notebook is running at:
[I 21:04:46.328 NotebookApp] http://(d3798d48a88f or 127.0.0.1):8888/?token=3dcab8dd69809896495d64041dba74e654c52612ea877c70
[I 21:04:46.328 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 21:04:46.334 NotebookApp] 
    
    To access the notebook, open this file in a browser:
        file:///.local/share/jupyter/runtime/nbserver-12-open.html
    Or copy and paste one of these URLs:
        http://(d3798d48a88f or 127.0.0.1):8888/?token=3dcab8dd69809896495d64041dba74e654c52612ea877c70



ということで、

docker run -u $(id -u):$(id -g) -it --rm -v $(realpath ~/notebooks):/tf -p 8888:8888 tensorflow/tensorflow:latest-py3-jupyter

で起動するのが最終形となりました。起動後、ブラウザで表示されたトークンを含む形(今回の起動であれば http://127.0.0.1:8888/?token=3dcab8dd69809896495d64041dba74e654c52612ea877c70 )にアクセスすると、

こんな感じでアクセスできました。ちなみに、Docker環境を終了させる場合には、Ctrl + Cで「y」入力です。

とりあえず、第2回まで完了です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)