vagrant上のUbuntuでTensor Flowを動かすまでの手順

公開日:2016/03/13 更新日:2016/03/13
vagrant上のUbuntuでTensor Flowを動かすまでの手順のサムネイル

はじめに

Tensor FlowはGoogleが2015年11月にオープンソース化して公開した機械学習ライブラリです。少し興味を持ったのでまずはTensor Flowを動かすための環境として、vagrant上のubuntuにインストールして動作させてみました。その手順をメモします。

環境と前提

  • Mac OS X El Capitan 10.11.3
  • Vagrant 1.8.1
  • Ubuntu 14.04 LTS
上記に加えて、Ubuntuにはすでにpython 2.7 がインストールされている環境を前提としています。ubuntuにpythonがインストールされているか、バージョンの確認は以下のコマンドでできます。
$ python -V
Python 2.7.6

また、Tensor Flowのインストール手順は以下の公式ドキュメント内にあるVirtualenv installationに沿っています。

Download and Setup | TensorFlow

インストール手順

Tensor Flow のインストール準備のためにpythonのパッケージ管理ツールであるpipやその他必要なものを以下コマンドでインストールします。

$ sudo apt-get install python-pip python-dev python-virtualenv

上記でインストールしているpython-virtualenvは、Pythonの仮想環境構築のためのツールです。ディレクトリ単位でPythonをインストールでき、Pythonの複数のバージョンを同一のOSにインストールできたり、OS上の他のユーザに影響を与えずにインストールできたりします。詳しくは以下の参考サイト様が参考になりました。ありがとうございました。

virtualenv (Python仮想環境)の使い方 | /var/log/sgryjp.log

なお、virtualenvのインストールには$ pip install virtualenvのように、pipや他のやり方でもインストールできますが、ここでは上記のように公式ドキュメントに沿って、aptを使ってインストールしています。

virtualenvを使ってPythonの仮想環境を構築します。ここでは以下のように~/tensorflowディレクトリに構築しています。

$ virtualenv --system-site-packages ~/tensorflow

あとは以下のコマンドで仮想環境をアクティベート(有効化)します。アクティベートすると以下のように(tensorflow)が先頭に表示されます。

$ source ~/tensorflow/bin/activate
(tensorflow) vagrant@vagrant:~$

あとは、以下コマンドでTensorFlowをインストールします。

(tensorflow) vagrant@vagrant:~$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl

インストールに成功すると、以下のようなメッセージが表示されます。

...省略...
Successfully built numpy
Installing collected packages: numpy, tensorflow
  Found existing installation: numpy 1.8.2
    Not uninstalling numpy at /usr/lib/python2.7/dist-packages, outside environment /home/vagrant/tensorflow
Successfully installed numpy-1.10.4 tensorflow-0.7.1

これでTensorFlowのインストールは完了です。

インストール時に遭遇したエラー

上記のTensorFlowのインストールコマンドを最初実行したところ、以下のようなエラーが表示されました。

(tensorflow) vagrant@vagrant:~$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl

...途中省略...

Can't rollback numpy, nothing uninstalled.
Command "/home/vagrant/tensorflow/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-etbWXf/numpy/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-UDOJxe-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/vagrant/tensorflow/include/site/python2.7/numpy" failed with error code 1 in /tmp/pip-build-etbWXf/numpy/

これは、python-devをインストールしていなかったことが原因のようです。上記ですでに書きましたが、aptpython-pippython-virtualenvと一緒に忘れずにpython-devをインストールしてから実行したらエラーは出なくなりました。

TensorFlowを動かしてみる

TensorFlowの公式サイトに豊富なチュートリアルが用意されているのでそれを使用してTensorFlowを動かしてみます。 チュートリアル用のソースをgitでダウンロードします。

$ git clone --recurse-submodules https://github.com/tensorflow/tensorflow

ダウンロードしたtensorflowディレクトリの中に、examples/tutorials/mnistというディレクトリがあり、その中にfully_connected_feed.pyというファイルがあるのでこれを使用します。 MNISTやこのファイルが何をするものなのかはすでに他のサイト様で詳しく説明が書いてあるので割愛します。以下が参考になると思います。

Googleの公開した人工知能ライブラリTensorFlowを触ってみた | 株式会社ネクスト Enginner Blog
fully_connected_feed.pyの一部を修正しないと動かないので、viなどのエディタで開きます。
$ vi ~/tensorflow/examples/tutorials/mnist/fully_connected_feed.py

そしてfully_connected_feed.pyの29行目と30行目にある以下の記述を

from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.examples.tutorials.mnist import mnist

以下のように修正します。

import input_data
import mnist

これは、実行に必要なファイルの読み込み先をローカルに変更しているだけになります。 あとは以下コマンドで実行します。

(tensorflow) vagrant@vagrant:~$ python ~/tensorflow/examples/tutorials/mnist/fully_connected_feed.py

以下の様な実行結果が表示されます。なお、実行すると、学習用データをインターネット経由でダウンロードしてくるので、最初は少し時間がかかるかもしれません。

(tensorflow) vagrant@vagrant:~$ python ~/tensorflow/examples/tutorials/mnist/fully_connected_feed.py
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting data/t10k-labels-idx1-ubyte.gz
Step 0: loss = 2.32 (0.007 sec)
Step 100: loss = 2.19 (0.004 sec)
Step 200: loss = 1.90 (0.004 sec)
Step 300: loss = 1.57 (0.003 sec)
Step 400: loss = 1.28 (0.004 sec)
Step 500: loss = 0.86 (0.004 sec)
Step 600: loss = 0.84 (0.005 sec)
Step 700: loss = 0.73 (0.004 sec)
Step 800: loss = 0.65 (0.004 sec)
Step 900: loss = 0.53 (0.004 sec)
Training Data Eval:
  Num examples: 55000  Num correct: 48042  Precision @ 1: 0.8735
Validation Data Eval:
  Num examples: 5000  Num correct: 4400  Precision @ 1: 0.8800
Test Data Eval:
  Num examples: 10000  Num correct: 8784  Precision @ 1: 0.8784
Step 1000: loss = 0.56 (0.005 sec)
Step 1100: loss = 0.33 (0.049 sec)
Step 1200: loss = 0.38 (0.004 sec)
Step 1300: loss = 0.56 (0.004 sec)
Step 1400: loss = 0.39 (0.004 sec)
Step 1500: loss = 0.29 (0.004 sec)
Step 1600: loss = 0.31 (0.004 sec)
Step 1700: loss = 0.29 (0.004 sec)
Step 1800: loss = 0.43 (0.004 sec)
Step 1900: loss = 0.48 (0.004 sec)
Training Data Eval:
  Num examples: 55000  Num correct: 49501  Precision @ 1: 0.9000
Validation Data Eval:
  Num examples: 5000  Num correct: 4525  Precision @ 1: 0.9050
Test Data Eval:
  Num examples: 10000  Num correct: 9043  Precision @ 1: 0.9043

以上でTensorFlowを動かすことができました。

まとめ

TensorFlowのインストールと動かすところまではできましたが、これでは何も分かっていない状態で面白く無いので、今度はここから独自のデータセットを使用して学習させるなどしたいと思います。

関連記事

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。