2017-11-19 12 views
0

ここでは、1つの変数を持つ単純なモデルを作成しようとしましたが、すべてのgpusで同じです。変数を初期化しようとしました。しかし、私はそれを適切に初期化することはできませんでした。テンソルフロー変数が正しく初期化されなかった

import tensorflow as tf 

def test_model(num): 
    mu = 1.0 
    sigma = 0.1 
    with tf.variable_scope("same_on_all_gpu", reuse=True): 
     var1 = tf.Variable(tf.truncated_normal(shape=(1,1), mean = mu, stddev = sigma)) 
    return tf.add(var1, num) 

with tf.device("/gpu:" + str(0)): 
    with tf.name_scope('%s_%d' % ("tower_gpu", 0)) as scope: 
     ret0 = test_model([[0]]) 

with tf.device("/gpu:" + str(1)): 
    with tf.name_scope('%s_%d' % ("tower_gpu", 1)) as scope: 
     ret1 = test_model([[1]]) 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    r0, r1 = sess.run([ret0,ret1],{}) 
    print("r0 " + str(r0)) 
    print("r1 " + str(r1)) 

が、私はこの出力を得た:

r0 [[ 0.]] 
r1 [[ 0.]] 

答えて

0

私はあなたのコードをテストすることはできませんが、私はときtest_model戻り、あなたは変数を作成するために使用さsame_on_all_gpuスコープを残していると思います。

tf.variable_scopeに設定すると、現在のスコープとそのサブスコープの変数にアクセスできますが、現在のスコープ外の変数にはアクセスできません。

関連する問題