【发布时间】:2019-01-30 12:01:40
【问题描述】:
我正在使用带有tensorflow和多gpu配置的python 3,我尝试使用following example来初始化多gpu模型,我创建了一个模型,很好,编译,运行和训练,但是当我尝试添加时模型编译前的这个:
from tensorflow.python.keras.utils import multi_gpu_model
model = multi_gpu_model(model, gpus=2, cpu_merge=False)
我收到这个错误
TypeError: int() 参数必须是字符串或数字,而不是 '张量形状'
注意我使用 tf 和 Eager eval
我发现 this 指的是使用 keras.utils.multi_gpu_model 而不是 tf.python.keras.utils.multi_gpu_model 但是当我这样做时,我得到了这个错误:
我在这里缺少什么?
第 217 行,在 multi_gpu_model 中 with tf.device(x.device): AttributeError: 'DeferredTensor' object has no attribute 'device'
模型的代码是
model = Sequential()
model.add(Flatten(input_shape=(128, 128, 3)))
model.add(Dense(100, activation="sigmoid"))
model.add(Dense(100, activation="sigmoid"))
更新:这可能是 gpu id 问题吗?当我尝试使用以下代码创建 multi_gpu_model 而不指定 gpus 计数时:
model = multi_gpu_model(model)
我收到以下错误:
ValueError: 用
gpus=3调用multi_gpu_model,我们期望 以下设备可用:['/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 个 GPU 时,tf 会尝试获取 GPU 0 和 GPU 1?我可以另外指定吗?
谢谢
【问题讨论】:
-
您的实际模型在哪里?从外观上看,您没有刚刚尝试初始化 multi_gpu_model 的模型,巧合的是,它也被命名为模型...?
-
我有一个工作模型,模型不是问题(它在没有多 gpu 部分的情况下工作)但我会将它添加到问题中
标签: python tensorflow keras deep-learning multi-gpu