トッカンソフトウェア

TensorFlow 基本

今回はTensorFlowの基本をやります。


定数(constant)

定数を加算してその結果を表示するサンプルをやってみます。
				
import tensorflow as tf


# 定数を定義
node1 = tf.constant(3.0, dtype=tf.float32)
node2 = tf.constant(4.0)

# 計算式を定義(加算)
node3 = tf.add(node1, node2)

# 計算を実行
sess = tf.Session()
print("\n計算結果: ", sess.run(node3))
sess.close()


			
イメージ

tf.constant

定数を定義します。サンプルではFloat型の3.0、4.0を定義しています。
dtypeは省略することができ、省略すると自動的に型を判断します。

tf.add

引数を加算し、引数の型のTensorを戻します。単にTensor同士を + としても加算されます。

tf.Session

セッションオブジェクトを作成します。
セッションオブジェクトのrunメソッドで実際の処理を行います。
(定義部分は定義を行うのみで実際の処理は行いません。)

処理が終わったらcloseメソッドで処理を閉じます。
以下のように記述する場合は、自動的にclose処理が行われるため、close処理は必要ありません、
				
with tf.Session() as sess:
  sess.run(...)

			

プレースホルダ(placeholder)

プレースホルダは後で値を入れるための入れ物です。
				
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

# プレースホルダ定義
node1 = tf.placeholder(tf.float32)
node2 = tf.placeholder(tf.float32)

# 計算式定義(加算) +はtf.addと同じ動作をします
node3 = node1 + node2

# プレースホルダに値をセットして計算実行
with tf.Session() as sess:
    print("\n計算結果: ", sess.run(node3, {node1: 3, node2: 4}))


			
イメージ

tf.placeholder

プレースホルダを定義します。定義時は入れ物だけ定義して、実際に計算を実行するときに値をセットします。

出力ログ制御

定数のサンプル実行時はログがたくさん出てきたので、今回は出力するログにフィルタを掛けました。
フィルタを掛けるにはos.environ['TF_CPP_MIN_LOG_LEVEL']を使用します。

os.environ['TF_CPP_MIN_LOG_LEVEL']にセットする値 表示するログ
0 すべてのログを出力
1 警告、エラーのみ
2 エラー
3 ログを出力しない


変数(Variable)

変数はtf.Variableを使います。
				
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

# 定数定義
node1 = tf.constant(1.0, dtype=tf.float32)

# 変数定義
node2 = tf.Variable(2.0)

# 計算式定義(加算) +はtf.addと同じ動作をします
node3 = node1 + node2

# 計算実行
with tf.Session() as sess:

    # 初期化
    sess.run(tf.global_variables_initializer())
    print("計算結果①: ", sess.run(node3))

    # 変数の値を変更し、再計算
    sess.run(tf.assign(node2, 10))
    print("計算結果②: ", sess.run(node3))


			
イメージ

tf.Variable

変数を定義します。変数に値をセットするには、tf.assignを使用します。
Sessionで実行前にtf.global_variables_initializerを呼び出す必要があります。

保存、読み込み

				
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

# 定数定義
node1 = tf.constant(1.0, dtype=tf.float32)

# 変数定義
node2 = tf.Variable(2.0)

# 計算式定義(加算) +はtf.addと同じ動作をします
node3 = node1 + node2

# saverを作成
saver = tf.train.Saver()

# 計算実行
with tf.Session() as sess:

    # 初期化
    sess.run(tf.global_variables_initializer())

    # 保存データ確認
    if tf.train.get_checkpoint_state('.'):
        try:
            # 保存データ読み込み
            saver.restore(sess, "./test")
        except:
            print("保存と読み込みでsave_pathが異なる?")
    else:
        print("初回実行")

    print("計算結果①: ", sess.run(node3))
    sess.run(tf.assign(node2, node3))
    print("計算結果②: ", sess.run(node3))

    # データ保存
    saver.save(sess, './test')


			
イメージ(初回実行)

イメージ(2回目)



ページのトップへ戻る