2017-07-13 5 views
0

グラデーションが「メモリ不足」エラーになるので、どのように複数のGPUでグラデーション機能を実行できますか?tf.gradients()関数を複数のgpuで動作させるにはどうすればいいですか?

with tf.device('gpu:1'): 
     trainable_variables = tf.trainable_variables() 
     grads = tf.gradients(self.loss, trainable_variables) 

    with tf.device('/gpu:2'): 
     var1=trainable_variables[60:107] 
     grad1=tf.gradients(self.loss, var1) 
    with tf.device('/gpu:3'): 
     var2=trainable_variables[57:107] 
     grad2=tf.gradients(self.loss, var2) 
    with tf.device('/gpu:3'): 
     optimizer = tf.train.RMSPropOptimizer(
      self.lrn_rate, 
      decay=0.9, 
      momentum=0.9, 
      epsilon=1.0) 
     apply_op1 = optimizer.apply_gradients(
      zip(grads, trainable_variables), 
      global_step=self.global_step, name='train_step') 

上記のコードは唯一のGPUで実行されます:グラデーション\またはgradients_1の\名前空間は唯一のGPUに出ているので、1:1、どのようにすることができ、複数のGPUで、この作品?

答えて

0

2つの解決方法があります。 1.このスタイルのコードを使用して、異なるレンジングでメモリをテストします。 2. gradient()関数でdevice()を使用してgradient()関数を再構築すると、異なるgpusで変数initialが作成されます。

関連する問題