Python tf.keras.utils.multi_gpu_模型只使用一个gpu

Python tf.keras.utils.multi_gpu_模型只使用一个gpu,python,tensorflow,keras,Python,Tensorflow,Keras,我有两个GPU可用,我想使用这两个GPU在推理过程中获得最大吞吐量。这就是为什么我想使用多gpu模型,它应该在一个gpu和另一个gpu上处理批处理的一半 但是,仅使用一个GPU(使用nvidia smi进行检查) 我可以用下面的代码复制它 import tensorflow as tf from tensorflow.keras.applications import Xception from tensorflow.keras.utils import multi_gpu_model impo

我有两个GPU可用,我想使用这两个GPU在推理过程中获得最大吞吐量。这就是为什么我想使用多gpu模型,它应该在一个gpu和另一个gpu上处理批处理的一半

但是,仅使用一个GPU(使用nvidia smi进行检查)

我可以用下面的代码复制它

import tensorflow as tf
from tensorflow.keras.applications import Xception
from tensorflow.keras.utils import multi_gpu_model
import numpy as np

num_samples = 32
height = 224
width = 224
num_classes = 1000

with tf.device('/cpu:0'):
    model = Xception(weights=None,input_shape=(height, width, 3),classes=num_classes)

# Replicates the model on 2 GPUs.
# This assumes that your machine has 2 available GPUs.
parallel_model = multi_gpu_model(model, gpus=2)
parallel_model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

# Generate dummy data.
x = np.random.random((num_samples, height, width, 3)).astype(np.float32)

dataset = tf.data.Dataset.from_tensor_slices(x)
dataset = dataset.batch(32)
dataset = dataset.repeat()

iterator = dataset.make_one_shot_iterator()
batch = iterator.get_next()

y = parallel_model(batch)

sess = tf.keras.backend.get_session()
while True:
    try:
        result = sess.run(y)
        print(result.shape)
    except tf.errors.OutOfRangeError:
        break
我希望它使用两个GPU,但它只使用1个。这是一个bug还是预期的行为?如何更改此示例以使用多个GPU