アラカン"BOKU"のITな日常

文系システムエンジニアの”BOKU”が勉強したこと、経験したこと、日々思うこと。

TensorFlowで足し算と掛け算をして、基本的な動きを確認する。

TensorFlowを動かす感覚をつかむために、足し算・掛け算などの基本的な演算をやってみます。

 

情報源は、こちらの本家のサイトにあるチュートリアルとかになります。

www.tensorflow.org

 

英語ですが、Chromeを使えば、比較的簡単に翻訳できます。

 

翻訳精度もあがってますから、だいたいの意味をつかむには苦労しません。

 

言葉的には難しいですけどね。

 

ちょっと引用してみます。

TensorFlowとは、データフローグラフを使用した数値計算用のオープンソースソフトウェアライブラリです。グラフのノードは数学的演算を表し、グラフのエッジはそれらの間で伝達される多次元データ配列(Tensor)を表します。 

 

・・・。

 

まだ、今の段階では理解できないですね。

後日追記:勉強しなおして、こちらの記事にまとめました。

arakan-pgm-ai.hatenablog.com

 

 とりあえず、簡単なソースを書いて、動かしてみるのが早そうです。

 

TensorFlowの処理を、ざっくり言えば、「グラフを構築して、セッションを使って実行する」ことみたいです。

 

グラフという感覚をつかむために、まずは、足し算をする「グラフ」と、掛け算をする「グラフ」を作って、それを実行(計算)して、結果を表示する簡単なプログラムをTensorFlowを使って書いてみます。

import tensorflow as tf

def get_add_graph(x, b):
    cop1 = tf.constant(x)
    cop2 = tf.constant(b)
    return tf.add(cop1, cop2)

 

def get_mul_graph(a):
    _vop1 = tf.Variable(0.)
    _vop2 = tf.constant(5.)
    vop1 = tf.assign(_vop1,_vop2)
    return tf.mul(a,vop1)

 

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    add_result = sess.run([get_add_graph(5., 3.)])
    print(add_result)
    mul_result = sess.run([get_mul_graph(5.)]);
    print(mul_result) 

 

ソースを解説します。

 

まず、足し算・掛け算のもとになる定数と変数を定義します。

 これが定数の定義です。

    cop1 = tf.constant(x)   

 

こちらが変数の初期化と値の設定(assign)です。

_vop1 = tf.Variable(0.)    

vop1 = tf.assign(_vop1,_vop2)

 

こうして定義した定数や変数を使って、グラフを作ります。

 

これが掛け算のグラフを作って返している部分です。

 tf.mul(a,vop1)

 

こっちは、足し算のグラフを作って返している部分です。

tf.add(cop1, cop2)

 

作ったグラフを実行するのは tf.session()のrunです。

 with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    add_result = sess.run([get_add_graph(5., 3.)])
    mul_result = sess.run([get_mul_graph(5.)])

 

変数を使う時は、最初に初期化処理をしておく必要があります。

sess.run(tf.global_variables_initializer())

 

で 足し算の実行  

add_result = sess.run([get_add_graph(5., 3.)])

 

 掛け算の実行

mul_result = sess.run([get_mul_graph(5.)])

 というわけですね。

 

printの部分は、結果を表示しているだけなので説明は不要でしょう。

 

こうしてみると、グラフというのが、何らかのオペレーションをあらわすオブジェクトだという感覚がよくわかりますね。

 

IDLEでF5キーを押して、実行してみた結果です。

f:id:arakan_no_boku:20170307231258j:plain

 

やったことは、しょぼいですけど、一応、あってるので、ここまではOKとしましょう。

 


関連するカテゴリの一覧/tensorflow関連記事はこちらです。

arakan-pgm-ai.hatenablog.com

 

f:id:arakan_no_boku:20170404211107j:plain