2017-06-12 11 views
0

Ich benutze Multi-GPU auf Tensorflow. Und ich bin verwirrt über die Freigabe von Variablen unter dem gleichen Umfang.tensorflow multi gpu teilen Variablen

Nach https://github.com/tensorflow/models/blob/master/tutorials/image/cifar10/cifar10_multi_gpu_train.py

der einfachste Weg ist:

for i in xrange(FLAGS.num_gpus): 
    with tf.device('/gpu:%d' % i): 
     tf.get_variable_scope().reuse_variables() 
     // and do sth. 

Aber in meinem Verständnis, zumindest die erste GPU hat Variable zu erstellen, weil es keine Variable für sie hat wieder zu verwenden. Und ich finde auch einen Code, der Wiederverwendung = False für die erste GPU setzt.

Also, was ist der richtige Weg, dies zu tun?

Antwort

0

Ja, Sie haben Recht. Für das erste Gerät sollte das Flag reuse auf False gesetzt werden. Im Tutorial wird tf.get_variable_scope().reuse_variables() nach construction of the network aufgerufen. Das kannst du auch machen.

Oder eine andere mögliche Lösung:

for i in xrange(FLAGS.num_gpus): 
     with tf.device('/gpu:%d' % i): 
      with tf.variable_scope(name, reuse= i>0): 
       // and do sth