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
$ 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
をインストールしていなかったことが原因のようです。上記ですでに書きましたが、apt
でpython-pip
、python-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のインストールと動かすところまではできましたが、これでは何も分かっていない状態で面白く無いので、今度はここから独自のデータセットを使用して学習させるなどしたいと思います。
関連記事
- 公開日:2019/06/03 更新日:2019/06/03
自然言語処理ライブラリのGiNZAを使って係り受け解析を試す
自然言語処理ライブラリのGiNZAを使って係り受け解析を行ってみたのでその手順をまとめます。指定した文章の係り受け木を作成して、単語間の修飾関係を可視化してみます。また、条件に合致する文章の検索、名詞節の抽出も行います。
- 公開日:2019/05/30 更新日:2019/05/30
News APIへの登録とPythonでニュースを取得するまでの手順
News APIは、いくつかのニュースサイトからトップニュースや条件指定して合致したニュースをJSON形式で取得できるAPIです。2019年5月時点では30,000ほどのニュースサイト等のソースに対応しています。この記事では、実際にNews APIを使用してニュースを取得するまでの手順をまとめます。
- 公開日:2019/04/16 更新日:2019/04/16
MeCabをインストールしてPythonで動作させるまでの手順
日本語による文章を解析してみたいと思い、色々調べたところMeCabという形態素解析エンジンがあることを知りました。自然言語処理自体に全く縁がありませんでしたが、手始めとしてMeCabをインストールして実際に動作させたのでその手順をメモします。
- 公開日:2019/04/15 更新日:2019/04/15
UbuntuにAnacondaをインストールしてPythonとJupyter Notebookを動かすまでの手順
AnacondaをUbuntuにインストールしました。Anacondaをインストールすることで、PythonとJupyter Notebookの環境が構築できます。ここではその手順をメモします。