らんだむな記憶

blogというものを体験してみようか!的なー

TensorFlowインストール

テンソルのながれ - らんだむな記憶で触れた機械学習のライブラリ「TensorFlow」を導入したい。http://tensorflow.org/tutorials/pdes/index.mdにあるようにPDE(Partial Differential Equation)の数値計算にも使えるからだ。前進Euler法もgradient descentによるhypothesisのlocal extremumの探索も基本的に同じだから応用できても不思議ではない。

TensorFlowで Hello Worldを動かしてみた&その解説 | Developers.IOに解説があった。AWS界隈で有名なクラスメソッド社の技術blogのようだ。(参考: 「うまいすしを、腹一杯。うまいすしで、心も一杯。」 | クラスメソッド株式会社)

さて、これを自分の環境に読み替えよう。

$ sudo easy_install pip
$ sudo pip install virtualenv
$ mkdir /home/samba/tensorflow
$ virtualenv --system-site-packages /home/samba/tensorflow
$ cd /home/samba/tensorflow
$ source bin/activate

でvirtualenv内の環境を作ってみる。virtualenvは本質ではないが、環境は分けたいよーという声も聞いたので、今回はその流儀に倣ってみる。
コンテナ仮想化のdockerの場合、dockerでGUIアプリを動かしてみた - QiitaのようにもにょもにょしないとGUIアプリを起動できないっぽい。正確には良く分からないけど、コンテナ内で動いているプロセスの描画をX forwardingでXサーバに飛ばしている形か何かじゃないだろうか。別に詳細はどうでもいいのであまりggってないが。

virtualenvの仮想化がどういうタイプのものなのかよく分かっていないが(というか、python環境だけ別のとこに作って、そちらを参照しているだけに思えるが)、念のため簡単にGUIが立ち上がるのか見たい。
ということで、pythonで熱方程式の数値解析 - らんだむな記憶で作成したスクリプトを叩いてみたが、普通にplotのウィンドウが起動した。面倒くさいことはなにもないようだ。

ということで、TensorFlowを導入していこう。

クラスメソッド社の解説はMac向けのようなので、オフィシャルの解説を参照する: http://www.tensorflow.org/get_started/os_setup.md

どうせvirtualenvを使っているので、そのままバイナリ版を使うことにする。気に入らなければソースコードからビルドするなりすれば良い。CUDAのSDKは使っていないので、GPU版ではなくCPU版を使う。

(tensorflow)xxx@yyy:~/samba/tensorflow/$ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl

なんか微妙なwarningが出るがそんなもんなんだろう...。

Building wheels for collected packages: numpy
  Running setup.py bdist_wheel for numpy
  Stored in directory: /home/xxx/.cache/pip/wheels/b3/d0/9c/c860a697e3ea6929e396a5c55fc5aa2ed7413d24332a9c5299
Successfully built numpy
Installing collected packages: six, numpy, tensorflow
  Found existing installation: six 1.5.2
    DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Not uninstalling six at /usr/lib/python2.7/dist-packages, outside environment /home/samba/tensorflow
  Found existing installation: numpy 1.8.2
    DEPRECATION: Uninstalling a distutils installed project (numpy) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Not uninstalling numpy at /usr/lib/python2.7/dist-packages, outside environment /home/samba/tensorflow
Successfully installed numpy-1.10.1 six-1.10.0 tensorflow-0.5.0
/home/samba/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning

一応numpyのバージョンを確認しよう。
まずは、オリジナル。

$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.version.version
'1.8.2'

次はvirtualenv内のもの

(tensorflow)xxx@yyy:~/samba/tensorflow$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.version.version
'1.10.1'

しっかりバージョンが変わってますなぁ。

さて、動作確認。再びクラスメソッドさんのサンプルを使う。
まずはホスト(?)環境で。

xxx@yyy:~/samba/tensorflow/py_work/01_hello$ python -B hello.py 
Traceback (most recent call last):
  File "hello.py", line 2, in <module>
    import tensorflow as tf
ImportError: No module named tensorflow

こちらの環境ではTensorFlowは見えないので怒られる。
次にvirtualenv側。

(tensorflow)xxx@yyy:~/samba/tensorflow/py_work/01_hello$ python -B hello.py 
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 4
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 4
hello, tensorflow!
42

おっ、動いたみたいね。

一応これで仮想環境へのTensorFlowの導入はいけた、ということだろう。

―――――・・・

ちょっとした都合で以下もやっておく。

(tensorflow)xxx@yyy:~/samba/tensorflow$ easy_install ipython