2015-12-14 16 views

答えて

12

CIFAR-10モデルのコードで複数の入力キューが使用されていることは間違いありません(を経由してcifar10.distorted_inputs()への複数の呼び出しによって)。

GPUの間で共有キューを使用する最も簡単な方法は、次の操作を実行することであろう。

  1. Nは、GPUの数であり、Nの因数でバッチサイズを増やします。

  2. cifar10.distorted_inputs()からcifar10.tower_loss()の外に電話をかけ、loop over GPUsの外に移動します。

  3. スプリット0番目(バッチ)の次元に沿ってcifar10.distorted_inputs()から返されimageslabelsテンソル:次のようにimageslabelsの引数を取り、それを呼び出すために

    images, labels = cifar10.distorted_inputs() 
    split_images = tf.split(0, FLAGS.num_gpus, images) 
    split_labels = tf.split(0, FLAGS.num_gpus, labels) 
    
  4. 修正cifar10.tower_loss()

    for i in xrange(FLAGS.num_gpus): 
        with tf.device('/gpu:%d' % i): 
        with tf.name_scope('%s_%d' % (cifar10.TOWER_NAME, i)) as scope: 
    
         loss = tower_loss(scope, split_images[i], split_labels[i]) 
    
関連する問題