当前位置:  开发笔记 > 人工智能 > 正文

Tensorflow:多GPU单输入队列

如何解决《Tensorflow:多GPU单输入队列》经验,为你挑选了1个好方法。

在tensorflow的cifar10多GPU示例中,似乎(如果我错了,请纠正我)每个GPU创建一个训练图像队列."正确"的做事方式不是要让所有塔都有一个队列吗?如果是,是否有可用的共享队列示例?



1> mrry..:

你是对的,CIFAR-10模型的代码使用多个输入队列(通过多次调用cifar10.distorted_inputs()via cifar10.tower_loss()).

在GPU之间使用共享队列的最简单方法是执行以下操作:

    将批量大小增加N倍,其中N是GPU的数量.

    通过GPU将呼叫cifar10.distorted_inputs()移出循环cifar10.tower_loss()外部.

    拆分从第0个(批处理)维度返回的imageslabels张量cifar10.distorted_inputs():

    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()为take imageslabelsarguments,并按如下方式调用它:

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

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有