スポンサードリンク
どうも、とがみんです。
以前の記事では、TensorFlowで開発をするのあたって、重要な概念である「データフロープログラミング」について紹介しました。
この記事では、TensorFlowにおける「変数」と「プレースホルダー」について紹介します。
Contents
変数とは?
「変数」とは、数値や文字列などのデータを保持する仕組みのことで、値の変更を行うことができる数です。
以下のデータフローに従ったプログラムについて考えます。
上記のデータフロー図では、処理1の出力結果が、変数a
に格納されるような流れになってます。
プログラムは以下のようになります。
プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import tensorflow as tf #データの準備 var_a = tf.Variable(1)#変数の定義 const_b = tf.constant(2)#定数の定義 #処理内容の記述 add1 = tf.add(var_a,const_b) update_data_a = tf.assign(var_a,add1)#var_aにadd1の結果を代入 add2 = tf.add(add1,update_data_a) #処理の実行 with tf.Session() as sess: sess.run(tf.initialize_all_variables())#変数の初期化 print('var_a',sess.run(var_a)) print('result',sess.run(add2)) print('var_a',sess.run(var_a)) print('result',sess.run(add2)) print('var_a',sess.run(var_a)) print('result',sess.run(add2)) print('var_a',sess.run(var_a)) |
出力
1 2 3 4 5 6 7 | var_a 1 result 6 var_a 3 result 10 var_a 5 result 14 var_a 7 |
変数の使い方に関して、TensorFlowでは以下のように変数の宣言や更新等を行なっていきます。
- 変数はtf.Variable(1)のように宣言する。
- 変数の値はtf.assign(var_a,add1)で更新する。
- セッション内でtf.initialize_all_variables()を実行し初期化する必要がある。
プレースホルダーとは?
次に、「プレースホルダー」についてです。
TensorFlowにおいて、「プレースホルダー」とは、実行するまで値がわからないような変数を扱う際に、その格納庫的な役割をしてくれるものです。
具体的なデータは実行時に与えられます。
以下のデータフローに従ったプログラムについて考えます。
上記の図では、実行時にプレースホルダーに5が入るようになっています。
プログラムは以下のようになります。
プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import tensorflow as tf #データの準備 holder_a = tf.placeholder(tf.int32) const_b = tf.constant(2) #処理内容の記述 add1 = tf.add(holder_a,const_b) #処理の実行 with tf.Session() as sess: result = sess.run(add1,feed_dict={holder_a: 5}) print(result) #出力=> 7 |
プレースホルダーは、処理の実行時に、feed_dictにて値を指定します。
まとめ
TensorFlowでプログラムにあたって重要な「変数」と「プレースホルダー」について説明しました。
参考文献
スポンサードリンク
スポンサードリンク