Googleのリリースした機械学習フレームワークTensorFlow。
TensorFlow自体は、LinuxとMac OSXにしか対応していないのですが、これをWindowsで動かしてみる環境を作ってみます。
そうDockerです。
目次
Docker Toolboxのインストール
TensorFlowのドキュメントには、Dockerのイメージを公開しているとあります。
これがWindowsでも使える。ので、まずはDockerをインストールします。
Dockerのインストールには通常のものとToolboxというセットの二種類あるみたいですが、Docker Toolboxが簡単そうなのでそちらを使う。
こちらからインストーラーをダウンロードしてきて実行。
特に注意するところもなく、Nextで進めていきます。
インストール後、「Docker Quickstart Terminal」からDockerのターミナルを起動します。
こういうターミナルが上がってこればOKです。
インストール後の確認として、
$ docker run hello-world
を実行して、
Hello from Docker!
This message shows that your installation appears to be working correcly.To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker datemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon createed a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker Hub account:
https://hub.docker.comFor mor examples and ideas, visit:
https://docs.docker.com/engine/userguide/
というメッセージが出ればOKです。
TensorFlowイメージからコンテナを作る
そして公開されているTensorFlowイメージからコンテナを作ります。まずは公式のコマンドそのままで。
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
起動してみたのですが、サービスは起動しているみたいだけどコンソールが出てこない…(このへんDocker不慣れなのでわからないだけかも
それで今度はlatest-develで起動してみます。
$ docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel
こっちではコンソールが起動してきました。
pythonでtensorflowの確認をしてみます。
$ python ... >>> import tensorflow as tf >>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() >>> print(sess.run(hello)) Hello, TensorFlow! >>> a = tf.constant(10) >>> b = tf.constant(32) >>> print(sess.run(a + b)) 42 >>>
pythonは「>>>」にある行を一行ずつ入力していって、「Hello, TensorFlow!」「42」という結果が返ってきたらOKです。
二回目以降のコンテナの起動について
実は、docker runコマンドを使用すると、毎回新しいコンテナを作ってしまいます。つまり毎回初期化された状態になる。
$ docker ps -a
とすると、今作成されているコンテナの一覧を見ることが出来ます。
その中から起動するときは、CONTAINER IDを指定します。
$ docker start -ai <CONTAINER ID>
イメージを作るときに名前を付けておくと、それで起動できるので便利です。
$ docker run --name tensorflow -it b.gcr.io/tensorflow/tensorflow:latest-devel
などとしておけば、
$ docker start -ai tensorflow
で起動できます。
ホスト(Windows)とコンテナでファイルを共有する
Windows側のファイルをそのまま使用したいときは、runのときに-vオプションを使います。
$ docker run -v /c/Users/(共有したいフォルダのパス):(TensorFlowのDockerでアクセスするときのパス) -it b.gcr.io/tensorflow/tensorflow:latest-devel
共有するWindows側のフォルダは、C:\Users以下でないといけないみたいです。また起動はDockerのMINGWからなので、パスはMINGW内のパスに、大文字と小文字が区別されたものになります。
例えば、「C:\Users\tmp」を「/root/share」に共有するときは以下のようにします。
$ docker run -v /c/Users/tmp:/root/share -it b.gcr.io/tensorflow/tensorflow:latest-devel
Dockerの使い方自体がちょっと覚束ないので、コマンドや引数などはまた追々…