2015-11-11 2 views
15

いくつかの場所では、変数が名前で初期化されている構文を見ました。例:変数var"counter"に名前を付ける点はなぜTensorflowで変数名を付けますか?

# With name 
var = tf.Variable(0, name="counter") 

# Without 
one = tf.constant(1) 

は何ですか?

答えて

27

nameパラメータはオプションです(変数と定数を作成してもしなくても作成できます)。プログラムで使用する変数は依存しません。名前はいくつかの場所で役立ちます:(計算後はsave them to a binary file)を保存または復元したい場合は、

を入力してください。 docsから:

By default, it uses the value of the Variable.name property for each variable

matrix_1 = tf.Variable([[1, 2], [2, 3]], name="v1") 
matrix_2 = tf.Variable([[3, 4], [5, 6]], name="v2") 
init = tf.initialize_all_variables() 

saver = tf.train.Saver() 

sess = tf.Session() 
sess.run(init) 
save_path = saver.save(sess, "/model.ckpt") 
sess.close() 

それでもあなたは、変数matrix_1matrix_2を持っている彼らは、ファイルにv1v2として保存しています。

また、TensorBoardでは、エッジの名前をうまく表示するために名前が使用されています。。あなたもgroup them by using the same scopeことができます。

import tensorflow as tf 

with tf.name_scope('hidden') as scope: 
    a = tf.constant(5, name='alpha') 
    W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0), name='weights') 
    b = tf.Variable(tf.zeros([1]), name='biases') 
7

次の2人の平行宇宙とPythonの名前空間とTensorFlow名前空間を想像することができます。 TensorFlow空間の名前は、実際にはTensorFlow変数に属する「実際の」属性です。Python空間の名前は、このスクリプトの実行中にTensorFlow変数を指す一時的なポインタに過ぎません。そのため、スクリプトの終了後にPython名前空間が存在しなくなり、保存されたファイルにTensorflow名前空間が残っているため、変数を保存して復元するときにTensorFlow名のみが使用される理由があります。

0

別のユースケースは次のようになります。

[0.10108799]

NameErrorトレースバック(最新の呼び出しの最後) :

は、次のコードとその出力

def f(): 
a = tf.Variable(np.random.normal(), dtype = tf.float32, name = 'test123') 

def run123(): 
    f() 
    init = tf.global_variables_initializer() 
    with tf.Session() as sess123: 
     sess123.run(init) 
     print(sess123.run(fetches = ['test123:0'])) 
     print(sess123.run(fetches = [a])) 

run123() 

出力を考えますin() 10 print(sess123.run(フェッチ= [a])) ---> 12 run123()run123で

() 8 sess123.run(INIT) 9プリント(sess123.run(フェッチが= [ 'test123:0'])) ---> 10名前 '' Fの範囲で定義されるように、ある

定義されない:プリント 11 12 run123()

NameError(sess123.runは、(= [A])を取り込みます) ()ではなく、run123()では使用できませんが、デフォルトのグラフでは何かを参照する必要があるため、必要に応じてデフォルトのグラフをさまざまなスコープで参照することができます。私は便利です。

関連する問題