Tensorflowとは
データフローグラフ
Tensorflowではデータフローグラフと言われる、データの流れ(フロー)を定義したグラフで処理が実行されます。
円(定数)と楕円(数学的な操作)の部分がノード(オペレーション)で、ノードを結ぶ線がエッジでtensor(多次元データ配列)を表します。
※ 円(定数)はプログラム上では定数を表しているように見えますが、Tensorflowでは値を出力するオペレーションです。
Tensor(テンソル)
Tensor(テンソル)とはn次元の多次元配列を意味しますが、具体的には以下の通りです。
Rank(階数) | Math Entity | 例 |
---|---|---|
0 | Scalar (0次元) |
s = 483 |
1 | Vector (1次元) |
v = [1.1, 2.2, 3.3] |
2 | Matrix (2次元) |
m = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] |
3 | 3-Tensor (3次元) |
t = [ [[2], [4], [6]], [[8], [10], [12]], [[14], [16], [18]] ] |
n | n-Tensor (n次元) |
・・・ |
実行
上記で定義した各ノードのオペレーションを実行し結果を得るには、Sessionオブジェクトを作成し、その中で実行する必要があります。
例えば以下のように単なる定数を定義しますが、Sessionを実行するまでは、Tensorオブジェクトですが、Sessionを実行するとスカラー値「1」が取得できます。
import tensorflow as tf
one = tf.constant(1, name='one')
print(one) # Tensor("one:0", shape=(), dtype=int32)
sess = tf.Session()
result = sess.run(one)
print(result) # 1
足し算と掛け算を用いたサンプル(python 2.7系)
以下は、1と2を足した結果に3を掛けると言うデータフローグラフを表しています。
※ Tensorflowに付属のTensorboardを使ってコードで記述した定義を生成
# coding: utf-8
import tensorflow as tf
one = tf.constant(1, name='one') # 定数を定義(nameはTensorboard上で見やすいようにつけているだけ付けなくても大丈夫です)
two = tf.constant(2, name='two')
three = tf.constant(3, name='three')
add = tf.add(one, two, name="add") # 足し算を定義
mul = tf.mul(add, three, name="multiply") # 掛け算を定義
init = tf.initialize_all_variables() # 定数初期化用
with tf.Session() as sess:
sess.run(init) # すべての変数を初期化
sess.run([add, mul])
tf.train.SummaryWriter('events', sess.graph) # グラフの可視化用
TensorBoardの起動
手順
手順1. sample.pyを実行
python sample.py
手順2. tensorboard実行
上記のサンプル(sample.py)で指定したevents
をtensorboard実行時に指定します。
tf.train.SummaryWriter('events', sess.graph) # グラフの可視化用
tensorboard --logdir=events
あとはコンソールに表示されたURLにアクセスしてGraphs
メニューをクリックすると
(You can navigate to http://0.0.0.0:6006)
以下参考までにTensorflowのインストール方法です
Install
Python
brew install pyenv-virtualenv
PYTHON_CONFIGURE_OPTS="--enable-unicode=ucs2" pyenv install 2.7.11
pyenv rehash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
Tensorflow
TensorflowをMacにインストールする場合は以下のリンクを参照してください
- ~/.matplotlib/matplotlibrc
backend : TkAgg