Python Tensorflow-如何在GPU之间分割批次,以便在经过训练的模型上进行预测?

Python Tensorflow-如何在GPU之间分割批次,以便在经过训练的模型上进行预测?,python,tensorflow,Python,Tensorflow,我使用的模型不是我创建的,而是经过修改的(来自此回购协议) 我有经过训练的模型,可以很好地使用它们进行预测,但我想运行整个图像文件夹,并在多个GPU之间分割工作。我不完全理解tf.device()是如何工作的,我所尝试的根本不起作用 我想我可以这样做: for i, d in enumerate(['\gpu:0', '\gpu:1']): with tf.device(d): output = sess.run(network, feed_dict={net_input

我使用的模型不是我创建的,而是经过修改的(来自此回购协议)

我有经过训练的模型,可以很好地使用它们进行预测,但我想运行整个图像文件夹,并在多个GPU之间分割工作。我不完全理解tf.device()是如何工作的,我所尝试的根本不起作用

我想我可以这样做:

for i, d in enumerate(['\gpu:0', '\gpu:1']):
    with tf.device(d):
        output = sess.run(network, feed_dict={net_input: image_batch[i]})
但这实际上并没有将任务分配给不同的GPU,也不会引发错误

我的问题是,是否可以将不同的映像分配给单独GPU上的会话的不同实例,而无需显式修改网络代码预训练。我希望避免使用CUDA_VISIBLE_DEVICES=.运行两个不同的python脚本

有没有一个简单的方法可以做到这一点


据我所知,操作的定义必须嵌套在“with tf.device()”块中,然而,当推断操作只是加载模型和权重时,如果我将其放入“with tf.device()”块中block I收到一个错误,表示图形已经存在,无法定义两次。

tf.device
仅在构建图形时应用,而不是执行它,因此在设备上下文中包装
会话。run
调用不会起任何作用

相反,我建议您使用或tf分发策略(tf.distribute/tf.contrib.distribute,具体取决于tf版本),特别是MirroredStrategy