【问题标题】:tf.python.keras.utils.multi_gpu_model error on initializingtf.python.keras.utils.multi_gpu_model 初始化错误
【发布时间】: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


【解决方案1】:

我遇到了同样的错误,我把os.environ[CUDA_VISIBLE_DEVICES]='1, 3'改成os.environ[CUDA_VISIBLE_DEVICES]="1, 3"解决了 如果您已经这样做了,您可能想检查一下这个极其简单的代码:不要忘记将 gpu 设备更改为您的。

from keras.utils import multi_gpu_model
from keras import Input, Model
from keras.layers import Conv2D
import os
#if you have gpu 1,3 avaliable
os.environ["CUDA_VISIBLE_DEVICES"]="1,3"
x = Input((64,64,3))
out = Conv2D(64,(3,3),padding='same')(x)
model = Model(x,out)
#model = deeplabv3_nopadding.Deeplabv3()
model = multi_gpu_model(model,gpus=2)

将输出:

使用 TensorFlow 后端。 2019-07-01 09:40:25.971722: 我 tensorflow/core/platform/cpu_feature_guard.cc:141] 你的 CPU 支持 此 TensorFlow 二进制文件未编译使用的说明: SSE4.1 SSE4.2 AVX AVX2 FMA 2019-07-01 09:40:26.277398: 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] 找到设备 0 具有属性:名称:TITAN Xp 主要:6 次要:1 memoryClockRate(GHz): 1.582 pciBusID: 0000:03:00.0 totalMemory: 11.90GiB freeMemory: 11.74GiB 2019-07-01 09:40:26.586391: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] 找到设备 1 具有属性:名称:TITAN Xp 主要:6 次要:1 memoryClockRate(GHz): 1.582 pciBusID: 0000:83:00.0 totalMemory: 11.90GiB freeMemory: 11.74GiB 2019-07-01 09:40:26.586477: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] 添加可见 gpu 设备: 0, 1 2019-07-01 09:40:27.377910: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] 设备 用强度 1 边缘矩阵互连 StreamExecutor:2019-07-01 09:40:27.377970:我 张量流/核心/common_runtime/gpu/gpu_device.cc:988] 0 1 2019-07-01 09:40:27.377977: 我 张量流/核心/common_runtime/gpu/gpu_device.cc:1001] 0: N N 2019-07-01 09:40:27.377981: 我 张量流/核心/common_runtime/gpu/gpu_device.cc:1001] 1: N N 2019-07-01 09:40:27.378592: 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] 创建 TensorFlow 设备(/job:localhost/replica:0/task:0/device:GPU:0 与 11355 MB 内存)-> 物理 GPU(设备:0,名称:TITAN Xp,pci 总线 id: 0000:03:00.0, 计算能力: 6.1) 2019-07-01 09:40:27.382844: 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] 创建 TensorFlow 设备(/job:localhost/replica:0/task:0/device:GPU:1 与 11355 MB 内存)-> 物理 GPU(设备:1,名称:TITAN Xp,pci 总线 id: 0000:83:00.0, 计算能力: 6.1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2015-03-18
    • 2019-08-05
    • 2013-04-12
    • 2018-08-27
    • 2015-04-06
    • 1970-01-01
    相关资源
    最近更新 更多