Я использую Python 3 с тензорным потоком и конфигурацией с несколькими GPU, я пытаюсь использовать следующий пример , чтобы запустить модель с несколькими GPU, я создаю модель, Все хорошо, компилируем, выполняем и обучаем, ноКогда я пытаюсь добавить это до компиляции модели:
from tensorflow.python.keras.utils import multi_gpu_model
model = multi_gpu_model(model, gpus=2, cpu_merge=False)
я получаю эту ошибку
TypeError: аргумент int () должен быть строкой или числом, а не 'TensorShape'
Примечание. Я использую tf с нетерпением eval
Я нашел this , ссылаясь на использование keras.utils.multi_gpu_model вместо tf.python.keras.utils.multi_gpu_model Но когда я делаю это, я получаю эту ошибку вместо:
Что мне здесь не хватает?
строка 217, в multi_gpu_model с tf.device (x.device): AttributeError: у объекта 'DeferredTensor' нет атрибута 'device'
код для модели
model = Sequential()
model.add(Flatten(input_shape=(128, 128, 3)))
model.add(Dense(100, activation="sigmoid"))
model.add(Dense(100, activation="sigmoid"))
обновление: это может быть проблема с идентификатором GPU?когда я пытаюсь создать multi_gpu_model без указания числа gpus со следующим кодом:
model = multi_gpu_model(model)
я получаю следующую ошибку:
ValueError: Для вызова multi_gpu_model
с помощью gpus=3
, мы ожидаем, что будут доступны следующие устройства: ['/ cpu: 0', '/ gpu: 0', '/ gpu: 1', '/ gpu: 2'].Однако эта машина имеет только: ['/ cpu: 0', '/ xla_cpu: 0', '/ xla_gpu: 0', '/ gpu: 0', '/ gpu: 1'].Попробуйте уменьшить gpus
У меня только 2 gpus, они подключены к портам pci # 1 и 2 (я не могу это изменить, у меня недостаточно места на плате для подключенияих на порт 0), имеет ли смысл то, что при указании 2 графических процессоров tf попытается получить графический процессор 0 и графический процессор 1?Могу ли я указать иначе?
Спасибо