5
在tensorflow's cifar10 multi-GPU example,似乎(糾正我,如果我錯了),每個GPU創建一個訓練圖像隊列。做事情的「正確」方式不是讓所有的塔都有一個隊列?如果是這樣,是否有一個可用的共享隊列示例?Tensorflow:多GPU單輸入隊列
在tensorflow's cifar10 multi-GPU example,似乎(糾正我,如果我錯了),每個GPU創建一個訓練圖像隊列。做事情的「正確」方式不是讓所有的塔都有一個隊列?如果是這樣,是否有一個可用的共享隊列示例?Tensorflow:多GPU單輸入隊列
對於CIFAR-10模型的代碼使用多個輸入隊列(通過cifar10.tower_loss()
多次調用cifar10.distorted_inputs()
),您是正確的。
,最簡單的方法,可使用的GPU之間共享隊列。將執行以下操作:
通過N,其中N是GPU的數量的因子增加批量大小。
將呼叫轉移到cifar10.distorted_inputs()
之外cifar10.tower_loss()
和loop over GPUs之外。
拆分從cifar10.distorted_inputs()
一起返回的第0(批)尺寸images
和labels
張量:
images, labels = cifar10.distorted_inputs()
split_images = tf.split(0, FLAGS.num_gpus, images)
split_labels = tf.split(0, FLAGS.num_gpus, labels)
修改cifar10.tower_loss()
採取images
和labels
參數,並調用它,如下所示:
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])