2017-11-19 3 views
0

Hier habe ich versucht, ein einfaches Modell mit einer Variablen zu erstellen, aber das gleiche über alle GPUs. Ich habe versucht, die Variable zu initialisieren. Allerdings habe ich es nicht richtig initialisiert.Tensorflow-Variablen wurden nicht richtig initialisiert

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)) 

Ich habe diese Ausgabe:

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

Antwort

0

Ich kann Ihren Code nicht testen, aber ich denke, dass, wenn test_model zurückkehrt, verlassen Sie den same_on_all_gpu Bereich, der Sie die Variable erstellt haben.

Einstellung reuse Gleich True in tf.variable_scope können Sie auf Variablen im aktuellen Bereich und seine Unterbereiche zugreifen, aber Sie können nicht auf eine Variable außerhalb des aktuellen Bereichs zugreifen.

Verwandte Themen