Mac OS XにTensorflowをインストールして、Hello worldまでやってみる
TensorFlow(テンソルフロー)とは
Gooleが開発したオープンソースの機械学習のライブラリです。
TensorFlowの特長として次のような点があります。
- CPUとGPUでコードの変更が不要で手元のPCでもデータセンタでも同じコードで動く
- GitHubのStar数が機械学習系プロジェクトの中でもトップ(さすがGoogle)でデファクトスタンダードになりつつある
- すでにGoogle内ではたくさんのプロダクトで使用されており、実際に効果があがっている
ということで、すでに実用に使われているオープンソースの機械学習ライブラリってことです。
最近ではAlpha Goという囲碁のプログラムにも使用され、囲碁のプロを破ったこともありました。
Qiitaにもいくつも投稿があり、株価予想や画像認識など面白そうな解説がたくさんあります。
そんなTensorFlowをインストールして、Hello worldまで動かしてみようとおもいます。
公式のインストールを読むとLinuxもしくはMac OS Xでの動作を案内しており、どちらかでやってみるのが簡単でしょう。
今回はMac OS XでTensorFlow CPU版(CPUパワーのみで機械学習を行うTensorFlow)をインストールします。
インストール方法
基本的に公式サイトのインストール方法(Virtualenv install)を参考にしています。
もし、このインストールで失敗する場合は公式サイトのコマンドを信用してください。
OSXにデフォルトでインストールされているpythonで、Virtualenvという仮想環境を作れるモジュールの上に、TensorFlow環境を構築していきます。
Virtualenvで作ることによって、アンインストールがとても容易になります。
pip(pythonのパッケージインストールシステム)とVirtualenvのインストール
$ python -V Python 2.7.10 $ sudo easy_install pip $ sudo pip install --upgrade virtualenv
TensorFlow環境を構築する準備
$ mkdir ~/tensorflow $ virtualenv --system-site-packages ~/tensorflow
TensorFlow環境に入り、構築
TensorFlow環境に入ると、プロンプトに(tensorflow) $と表示されるようになります。
$ source ~/tensorflow/bin/activate (tensorflow) $ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl # Successfully installed numpy-1.11.0 protobuf-3.0.0b2 tensorflow-0.8.0 って出たら成功です。
TensorFlow環境に入ったり出たりする
(tensorflow) $ deactivate # 出るとプロンプトが戻ります $ source ~/tensorflow/bin/activate # 入ると先ほどと同じようになります
これでインストールは終わりです。
Hello world
TensorFlowが正常にインストールされたかどうか、TensorFlowを使った簡単なプログラムを書いて試してみます。
$ source ~/tensorflow/bin/activate # TensorFlow環境に入ると (tensorflow) $ってターミナルが変化します (tensorflow) $ vi helloworld.py
次のコードをコピペ
import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() print sess.run(hello)
Hello worldを実行
(tensorflow) $ python helloworld.py Hello, TensorFlow!
ということで、Hello worldが表示されTensorFlow環境が実行可能なことが確認されました。
さて、これだけではつまらないのでカーブフィッティングのプログラムを試してみます。
y = x * 0.1 + 0.3 の数直線上にランダムに100個の点を設置し、
それをTensorFlowを使って方程式 y = x * w + bの定数wとbを推測させてみます。(TensorFlowプログラムはw=0.1、b=0.3であることを知らない)
使用するアルゴリズムは確率的勾配降下法というものです。
簡単に言うと、定数wとbを最初はランダムに設定し、そこから求められた値と現実の値の差を微分を利用して0に近づけようとするアルゴリズムです。
(tensorflow) $ vi gd.py
次のコードをコピペ
import tensorflow as tf import numpy as np # Create 100 phony x, y data points in NumPy, y = x * 0.1 + 0.3 x_data = np.random.rand(100).astype(np.float32) y_data = x_data * 0.1 + 0.3 # Try to find values for W and b that compute y_data = W * x_data + b # (We know that W should be 0.1 and b 0.3, but Tensorflow will # figure that out for us.) W = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) b = tf.Variable(tf.zeros([1])) y = W * x_data + b # Minimize the mean squared errors. loss = tf.reduce_mean(tf.square(y - y_data)) optimizer = tf.train.GradientDescentOptimizer(0.5) train = optimizer.minimize(loss) # Before starting, initialize the variables. We will 'run' this first. init = tf.initialize_all_variables() # Launch the graph. sess = tf.Session() sess.run(init) # Fit the line. for step in xrange(201): sess.run(train) if step % 20 == 0: print(step, sess.run(W), sess.run(b)) # Learns best fit is W: [0.1], b: [0.3]
実行
(tensorflow) $ python gd.py (0, array([ 0.11945292], dtype=float32), array([ 0.37063468], dtype=float32)) (20, array([ 0.09696758], dtype=float32), array([ 0.30144662], dtype=float32)) (40, array([ 0.09920744], dtype=float32), array([ 0.30037808], dtype=float32)) (60, array([ 0.09979286], dtype=float32), array([ 0.30009884], dtype=float32)) (80, array([ 0.09994586], dtype=float32), array([ 0.30002585], dtype=float32)) (100, array([ 0.09998585], dtype=float32), array([ 0.30000675], dtype=float32)) (120, array([ 0.09999631], dtype=float32), array([ 0.30000177], dtype=float32)) (140, array([ 0.09999906], dtype=float32), array([ 0.30000046], dtype=float32)) (160, array([ 0.09999975], dtype=float32), array([ 0.30000013], dtype=float32)) (180, array([ 0.0999999], dtype=float32), array([ 0.30000007], dtype=float32)) (200, array([ 0.0999999], dtype=float32), array([ 0.30000007], dtype=float32))
ということで、w=0.0999999、b=0.30000007と本来の数値(w=0.1、b=0.3)に近似しているので成功といえます。
アンインストール方法
(tensorflow) $ deactivate $ cd ~/ $ sudo rm -rf tensorflow
インストールしたフォルダ以下を削除すればおしまいです。普通にFinderから削除しても問題ありません。
もっと深く学びたい場合
機械学習を勉強したいなら、次の本がおすすめです。
著者の中井悦司さんがブログでこの本を交えつつ、TensorFlowの解説をしているのでここから勉強してみるのも良いと思います。
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2015/10/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る