2016-08-12 5 views
12

Tensorflowは、このAPIが定義されています:テンソルフロー内のローカル変数とは何ですか?

tf.local_variables()

collection=[LOCAL_VARIABLES]で作成したすべての変数を返します。

戻り値:

ローカル変数オブジェクトのリスト。

TensorFlowのローカル変数は正確には何ですか?誰かが私に例を与えることができますか?

+0

この[問題](https://github.com/tensorflow/tensorflow/issues/1045)を参照してください、使用前に初期化する必要があり、ローカル変数があります。 – suiyuan2009

答えて

14

通常の変数と同じですが、デフォルト以外のコレクションにあります(GraphKeys.VARIABLES)。そのコレクションは保存する変数のデフォルトリストを初期化するためにsaverによって使用されるため、localという指定を指定するとデフォルトでその変数を保存しないという効果があります。 TF内のローカル変数がcollections=[tf.GraphKeys.LOCAL_VARIABLES]で作成された任意の変数です:

は私が limit_epochs

with ops.name_scope(name, "limit_epochs", [tensor]) as name: 
    zero64 = constant_op.constant(0, dtype=dtypes.int64) 
    epochs = variables.Variable(
     zero64, name="epochs", trainable=False, 
     collections=[ops.GraphKeys.LOCAL_VARIABLES]) 
+0

distributed_replicatedモードの分散テンソルフローはローカル変数を使用します。 – suiyuan2009

13

短い答えあるコードベース、それを使用する唯一の場所を見ています。例えば:

e = tf.Variable(6, name='var_e', collections=[tf.GraphKeys.LOCAL_VARIABLES]) 

LOCAL_VARIABLES:各 マシンに対してローカルな変数オブジェクトのサブセット。通常、カウンタなどの一時変数に使用されます。注: このコレクションに追加するにはtf.contrib.framework.local_variableを使用してください。

通常、チェックポイントに保存/復元されず、一時的または中間的な値として使用されます。


長い答え:これは、同様に私にとっては混乱の源でした。

['var_a:0', 'var_b:0', 'aaa/var_c:0', 'bbb/var_d:0', 'var_z:0', 'var_z_1:0'] 
[] 

:、私は常にグローバル変数のみを受け取ったどんなに私が試したものを

import tensorflow as tf 

def some_func(): 
    z = tf.Variable(1, name='var_z') 

a = tf.Variable(1, name='var_a') 
b = tf.get_variable('var_b', 2) 
with tf.name_scope('aaa'): 
    c = tf.Variable(3, name='var_c') 

with tf.variable_scope('bbb'): 
    d = tf.Variable(3, name='var_d') 

some_func() 
some_func() 

print [str(i.name) for i in tf.global_variables()] 
print [str(i.name) for i in tf.local_variables()] 

:最初に、私は、ローカル変数がlocal variable in almost any programming languageと同じものを意味すると思ったが、それは同じことではありませんtf.local_variablesのドキュメントには、詳細の多くを提供していない:

ローカル変数 - プロセス変数あたりは、通常 CHに復元/保存されていませんeckpointであり、一時的または中間的な値に使用されます。たとえば、 は、メトリック計算のカウンタとして、またはこのマシンがデータを読み取った エポックの数として使用できます。 local_variable()は自動的に はGraphKeys.LOCAL_VARIABLESに新しい変数を追加します。この便利な 関数は、そのコレクションの内容を返します。


しかしtf.Variableクラスのinitメソッドのドキュメントを読んで、私はcollectionsのリストを割り当てることにより、変数を作成している間、あなたはそれになりたいです変数の種類を提供することができますことを発見。

可能な収集要素のリストはhereです。したがって、ローカル変数を作成するには、このようなことをする必要があります。あなたがlocal_variablesのリストに表示されます。

e = tf.Variable(6, name='var_e', collections=[tf.GraphKeys.LOCAL_VARIABLES]) 
print [str(i.name) for i in tf.local_variables()] 
関連する問題