2015-12-14 82 views

回答

12

對於CIFAR-10模型的代碼使用多個輸入隊列(通過cifar10.tower_loss()多次調用cifar10.distorted_inputs()),您是正確的。

,最簡單的方法,可使用的GPU之間共享隊列。將執行以下操作:

  1. 通過N,其中N是GPU的數量的因子增加批量大小。

  2. 將呼叫轉移到cifar10.distorted_inputs()之外cifar10.tower_loss()loop over GPUs之外。

  3. 拆分從cifar10.distorted_inputs()一起返回的第0(批)尺寸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()採取imageslabels參數,並調用它,如下所示:

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