TensorFlowの日本語まとめ

TensorFlowの公式サイトに書かれている英文を英語ど素人が翻訳(日本語訳/和訳)します。 間違いがありましたら、優しく教えていただけますと幸いです。 内容を理解したら、使ってみたい。

4.テンソル

TensorFlowプログラムは、すべてのデータを表すテンソルデータ構造を使用します。-- 唯一のテンソルは、計算グラフで操作間で渡されます。あなたはn次元配列またはリストとしてTensorFlowのテンソルと考えることができます。テンソルは静的タイプ、ランク、及び形状を有しています。TensorFlowこれらの概念を処理する方法の詳細についてはRank, Shape, and Type のリファレンスを参照してください

 

スポンサーリンク

 

 

変数

変数は、グラフの実行間で状態を維持します次の例は、単純なカウンタとして変数を示しています。詳細については、Variablesを参照してください

# Create a Variable, that will be initialized to the scalar value 0.
state = tf.Variable(0, name="counter")

# Create an Op to add one to `state`.

one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)

# Variables must be initialized by running an `init` Op after having
# launched the graph.  We first have to add the `init` Op to the graph.
init_op = tf.initialize_all_variables()

# Launch the graph and run the ops.
with tf.Session() as sess:
  # Run the 'init' op
  sess.run(init_op)
  # Print the initial value of 'state'
  print(sess.run(state))
  # Run the op that updates 'state' and print 'state'.
  for _ in range(3):
    sess.run(update)
    print(sess.run(state))

# output:

# 0
# 1
# 2
# 3

このコードassign()操作だけでadd()操作のような式グラフの一部であるため、実際にrun()式を実行するまでの割り当てを実行しません
 
通常は、変数のセットとして、統計モデルパラメータを表します例えば、変数にテンソルとしてニューラルネットワークの重みを格納します。訓練中にあなたが繰り返し訓練のグラフを実行して、このテンソルを更新します。
 

フェッチ

操作出力を取得しSessionオブジェクトのrun()の呼び出しでグラフを実行し、取得するためのテンソル渡します前の例では、単一ノードの状態をフェッチしますが、複数のテンソルを取得することができます。
input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)

with tf.Session() as sess:
  result = sess.run([mul, intermed])
  print(result)

# output:
# [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]

 要求されたテンソルの値を生成するために必要なすべてのOPS一度実行されます。(要求されたテンソルあたり一度でない)

 

フィード

上記の例は、定数変数に格納することで、計算グラフテンソルを導入しますTensorFlow、グラフ内の任意の操作に直接テンソルにパッチを適用するためのフィードメカニズムを提供します
 
フィードは、一時的にテンソル値と操作の出力を置き換えます。あなたは、run()の呼び出しの引数としてフィードデータを提供します。フィードはそれだけが渡されると、実行コールに使用されます。最も一般的なユースケースがあること、それらを作成するtf.placeholder()を使用して操作を「フィード」するために特定の操作を指定することを含みます:
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1, input2)

with tf.Session() as sess:
  print(sess.run([output], feed_dict={input1:[7.], input2:[2.]}))

# output:
# [array([ 14.], dtype=float32)]
あなたはそれのためにフィードを提供しない場合はplaceholder()操作はエラーを生成します。フィード規模な例のため、MNIST fully-connected feed tutorial (source code) を見てください。
 

f:id:TensorFlow:20160101212810j:plain

 
(原文サイト)