2017-12-12 5 views
1

私は100の結果を得ることができませんなぜ乱数ですか?コードは以下の通りです:あなたがfunc1可変スコープとget_varible

v1 = tf.get_variable('var1', shape=[]) 

を...書くとき

def func1(): 
    with tf.variable_scope("var_scope"): 
     v1 = tf.get_variable('var1', shape=[]) 
     v1 = tf.zeros([1]) 
     v1 = v1 + 100 

def func2(): 
    with tf.variable_scope("var_scope", reuse=True): 
     v2 = tf.get_variable('var1') 

     with tf.Session() as sess: 
      sess.run(tf.global_variables_initializer()) 
      result = sess.run(v2) 
      print(result) 

func1() 
func2() 

答えて

1

、この変数は、ランダムに初期化されます。 func1の後続の操作ではこのノードは変更されませんが、の新しいノードはとなります。計算グラフにはpython変数とtensorflowノードの違いがあることを覚えておいてください。違いを見るために

変更

v1 = tf.get_variable('var1', shape=[], initializer=tf.constant_initializer(0)) 

にコードを...。