読者です 読者をやめる 読者になる 読者になる

デジタル・デザイン・ラボラトリーな日々

アラフォープログラマーが数学と物理を基礎からやり直す

WindowsユーザーのTensorFlowことはじめ

機械学習 tensorflow 人工知能

はじめに

静岡Developers勉強会では、今年の勉強会のテーマとして「人工知能ハンズオン」を予定しています。
前記事にて、自PCに「TensorFlow」をインストールしてみました。
インストールしただけで、「TensorFlow」がどういったものなのかをまったく理解出来ていません。
ネットで検索した幾つかのサイトを参考にこれから理解していこうと思います。

Pythonの入門として、勉強会仲間であるUsekさんの記事を参考にするといいでしょう。
qiita.com

エディタについて

TensorFlowはPythonを使ってプログラムしていくのですが、エディタが無いことにはプログラムを組みにくいですよね。
以前、静岡Developers勉強会で「実践コンピュータービジョン」を行った際、Python向け統合環境(IDE)の「PyCharm」を使っていました。
その後、もう少し手軽なものとして「IPython Notebook」というPythonのコードを含んだWebページを作成できるものを教わったので、今回はこちらを使用していきます。

IPython Notebookは、その後に多言語対応したこともあって、「Jupyter」という名前に変更されていました。

Jupyter Notebook(IPython)のインストール

下記サイトを参考に「Jupyter Notebook」をインストールしました。
www.task-notes.com
※Anacondaでは最初からインストール済みなんですが、自分はTensorFlow専用の環境(tensorenv)を作成しているため、インストールする必要がある。

tensorenvの環境を有効にしてから、pipコマンドでインストール

$ source activate tensorenv

(tensorenv)$ pip install jupyter 

Jupyterの起動

(tensorenv)$ jupyter notebook

Webブラウザが起動しますので、そこからanaconda3/envs/tensorenvフォルダまで移動させます。
f:id:Yaju3D:20160327185255p:plain

更にtensorenvフォルダ配下に移動して、右横の「New」で新規ファイルを「Python 3」で作成します。
f:id:Yaju3D:20160327192015p:plain

それでは、下記サイトの演算を実際に実行してみましょう。
qiita.com

では、実際にTensorFlowを使って計算してみます。最初は、以下の式を書いてみます
y = x^2 + b

import tensorflow as tf

def x2_plus_b(x, b):
    _x = tf.constant(x)
    _b = tf.constant(b)
    result = tf.square(_x)
    result = tf.add(result, _b)
    return result

print resultではエラーとなったため、print(result)に修正しました。

with tf.Session() as sess:
    result = sess.run([x2_plus_b(2., 3.)])
    print(result)

実行結果(printの出力)は以下のようになります。
2^2 + 3 = 7 なので、きちんと計算できていることがわかります。
f:id:Yaju3D:20160327205925p:plain

TensorBoardによる可視化

TensorFlowには、TensorBoardという強力なビジュアライゼーションツールが付いている点も特徴の一つになっています。

先ほどの続きとして下記ソースを入力します。

import tensorflow as tf

def monitor_calculation(x, b):
    title = "b = {0}".format(b)
    c = x2_plus_b(float(x), float(b))
    s = tf.scalar_summary(title, c)
    m = tf.merge_summary([s])  # if you are using some summaries, merge them
    return m

with tf.Session() as sess:
    writer = tf.train.SummaryWriter("log", graph_def=sess.graph_def)    
    xaxis = range(-10, 12)

    for b in range(3):
        for x in xaxis:
            summary_str = sess.run(monitor_calculation(x, b))
            writer.add_summary(summary_str, x)

これを実行すると、ログがフォルダ(/home/yaju/anaconda3/envs/tensorenv/log)に出力されます。
f:id:Yaju3D:20160327225938p:plain

Jupyterの停止

TensorBoardのコマンドはターミナルで行うので、Jupyterの停止する必要があります。
停止するには、ターミナルにて「Ctrl + C」キーを押します。

追記 2016/04/07
Jupyterの右横にある「New」に「Terminal」がありました。
これを使えば、Jupyterを停止する必要はありません。

TensorBoardの実行

logdirには絶対パスを指定します。

(tensorenv)$ tensorboard --logdir=/home/yaju/anaconda3/envs/tensorenv/log

Starting TensorBoard  on port 6006
(You can navigate to http://0.0.0.0:6006)

Webブラウザにて、下記URLを入力します。

localhost:6006

f:id:Yaju3D:20160327231243p:plain

今回はここまでとします。