2016年9月25日日曜日

はじめてのTensorFlow 動作確認編

r.0.10の動作確認用のソースコードが用意されています。
インストール後に実行してみましょう。
https://www.tensorflow.org/versions/r0.10/get_started/index.html


動作確認

動作確認用のPythonファイルを作成します。
(tensorflow)$ touch tf_test.py
(tensorflow)$ vi tf_test.py


サンプルソースはy = x * a + bの、aとbの値を求めるプログラムです。
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 range(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 tf_test.py
(0, array([-0.08499005], dtype=float32), array([ 0.5096584], dtype=float32))
(20, array([ 0.03381674], dtype=float32), array([ 0.33253124], dtype=float32))
(40, array([ 0.08111919], dtype=float32), array([ 0.30928054], dtype=float32))
(60, array([ 0.09461367], dtype=float32), array([ 0.30264756], dtype=float32))
(80, array([ 0.09846338], dtype=float32), array([ 0.30075532], dtype=float32))
(100, array([ 0.09956162], dtype=float32), array([ 0.30021548], dtype=float32))
(120, array([ 0.09987493], dtype=float32), array([ 0.30006149], dtype=float32))
(140, array([ 0.09996434], dtype=float32), array([ 0.30001754], dtype=float32))
(160, array([ 0.09998985], dtype=float32), array([ 0.30000502], dtype=float32))
(180, array([ 0.09999709], dtype=float32), array([ 0.30000144], dtype=float32))
(200, array([ 0.09999915], dtype=float32), array([ 0.30000043], dtype=float32))

0.1 と 0.3の近似値が算出されている!!

はじめてのTensorFlow インストール編

TensorFlow

以下、公式ページを参考にしました。
https://www.tensorflow.org/versions/master/get_started/os_setup.html#virtualenv-installation

記事の動作確認環境はr.0.10、MacOS 10.11.6です。


ここで使う知識

pip
https://ja.wikipedia.org/wiki/Pip
Virtualenv
https://virtualenv.pypa.io/en/stable/


TensorFlowの環境構築

所要時間5分以内で完了します。

pipとVirtualenvのインストール
$ sudo easy_install pip
$ sudo pip install --upgrade virtualenv
Virtualenvの環境を構築する。ディレクトリは~/tensorflowを指定。
$ virtualenv --system-site-packages ~/tensorflow
Virtualenvで構築した環境に入る。
$ source ~/tensorflow/bin/activate
pipを用いてTensorFlowをインストールする。
TensorFlowをCPUのみで動作させる場合と、GPUを有効にする場合でURLが異なるので注意。
# Mac OS X, CPU only, Python 2.7:
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0-py2-none-any.whl

# Mac OS X, GPU enabled, Python 2.7:
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0-py2-none-any.whl
インストールの実行
(tensorflow)$ pip install --upgrade $TF_BINARY_URL

成功すると次のメッセージが表示される。
Successfully installed funcsigs-1.0.2 mock-2.0.0 numpy-1.11.1 pbr-1.10.0 protobuf-3.0.0b2 six-1.10.0 tensorflow-0.10.0

以上でインストールは終了です。

TensorFlow環境からexitする場合は次のコマンドを実行する。
(tensorflow)$ deactivate