Introduction

darknetに引き続きTensorFlowもインストールしてみます。
いつも思うのですが、フレームワークを知っているのと、インストールして試しに使ってみるだけでも大分違うと思います。
インストールした後に+αで何かできたらもっとよいですが。

Get Started

公式ページにすべて手順が書いてあります。
Pythonにインストールするよ、ってことで特に難しいことはないと思います。

ただ、Pythonを使うといっても、インストール先は

  • Virtualenv
  • “native” pip
  • Docker
  • Anaconda

と複数用意されています。
今回はDockerを使います。

Install

気をつけることもないですが、DockerHubTensorFlowイメージはタグを含めてたくさんあります。
タグは主に

  • (version)-devel-gpu-py3
    • ビルドに必要なソースコートや依存バイナリ付きのPython3用GPU対応版
  • (version)-devel-gpu
    • ビルドに必要なソースコートや依存バイナリ付きのPython2用GPU対応版
  • (version)-devel-py3
    • ビルドに必要なソースコートや依存バイナリ付きのPython3用CPU対応版
  • (version)-devel
    • ビルドに必要なソースコートや依存バイナリ付きのPython2用CPU対応版
  • (version)-gpu-py3
    • Python3用GPU対応版
  • (version)-gpu
    • Python2用GPU対応版
  • (version)-py3
    • Python3用CPU対応版
  • (version)
    • Python2用CPU対応版

の8種類があります。
**(version)** は、latestnightly、バージョン番号があります。
個人的には、latestを選ぶと、このバージョンいくつだっけ?っことになってわからなくなるのであまり好きではありません。
2018/05/05時点の最新のTensorFlowは1.8です。
なので、1.8を使います。
下記コマンドで、イメージをpullし、コンテナに入ります。

1
$ sudo nvidia-docker run --rm -it tensorflow/tensorflow:1.8.0-gpu-py3 /bin/bash

コンテナに入った後です。

1
2
3
$ python -m pip freeze | grep tensor
$ tensorboard==1.8.0
$ tensorflow-gpu==1.8.0

TensorFlowのGPU版とTensorBoardがインストールされているのがわかります。
TensorBoardは深層学習の状況などを可視化できるWebコンソールです。
これを確認するには、コンテナのポートを開く必要があります。
ですので、下記のようにコンテナを再実行し、TensorBoardを起動します。ホスト側のポート番号は自由ですが、コンテナ側は6006にします。

1
$ sudo nvidia-docker run --rm -p 6006:6006 -it tensorflow/tensorflow:1.8.0-gpu-py3 /bin/bash

Test MNIST

おなじみのMNISTのサンプルがgithubにありますのでありがたく使わせてもらいます。

このサンプルは、mnistの学習結果をTensorBoardで確認できるように出力してくれます。
使い方は下記です。

1
2
3
4
5
6
# wget はインストールされていないのでインストール
$ apt-get update
$ apt-get install wget
$ wget https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py
$ mkdir /var/log/tensorflow
$ python mnist_with_summaries.py --log_dir=/var/log/tensorflow

実行後、別のコンソールから学習中のコンテナに接続し、下記コマンドを実行します。

1
2
3
4
5
6
7
8
9
$ sudo docker ps | grep tensor
# コンテナIDを確認
073300c20aec tensorflow/tensorflow:1.8.0-gpu-py3 "/bin/bash" 20 minutes ago Up 20 minutes 0.0.0.0:6006->6006/tcp, 8888/tcp reverent_spence
# sudo docker attach だと既に動いている学習中のセッションにつながるため exec で繋ぐ
$ sudo docker exec -it 073300c20aec /bin/bash

# コンテナの中
# 前段で実行した python に渡した引数と同じ場所を指定
$ tensorboard --logdir /var/log/tensorflow

TensorBoardが起動するので、ブラウザからホストOSのポートにアクセスします。
学習初期
学習終了