tf.python.keras.utils.multi_gpu_模型初始化时出错
我使用的是带有tensorflow和多gpu配置的python 3,我尝试使用来初始化多gpu模型,我创建了一个模型,它很好,可以编译、运行和训练,但是当我尝试在模型编译之前添加这个时:tf.python.keras.utils.multi_gpu_模型初始化时出错,python,tensorflow,keras,deep-learning,multi-gpu,Python,Tensorflow,Keras,Deep Learning,Multi Gpu,我使用的是带有tensorflow和多gpu配置的python 3,我尝试使用来初始化多gpu模型,我创建了一个模型,它很好,可以编译、运行和训练,但是当我尝试在模型编译之前添加这个时: from tensorflow.python.keras.utils import multi_gpu_model model = multi_gpu_model(model, gpus=2, cpu_merge=False) 我得到这个错误 TypeError:int()参数必须是字符串或数字,而不是 “张
from tensorflow.python.keras.utils import multi_gpu_model
model = multi_gpu_model(model, gpus=2, cpu_merge=False)
我得到这个错误
TypeError:int()参数必须是字符串或数字,而不是
“张力形”
注意:我正在使用tf和eager eval
我发现引用的是使用keras.utils.multi_gpu_模型而不是tf.python.keras.utils.multi_gpu_模型,但当我这样做时,我得到了以下错误:
我错过了什么
第217行,在多个gpu模型中
使用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 id问题吗?当我尝试创建一个多gpu模型而不使用以下代码指定gpu计数时:
model = multi_gpu_model(model)
我得到以下错误:
ValueError:要使用gpu=3
调用多gpu\u模型
,我们希望
以下设备将可用:['/cpu:0','/gpu:0','/gpu:1',
“/gpu:2']”。但是,此计算机只有:['/cpu:0','/xla_cpu:0',
“/XLAGPU:0',”/gpu:0',“/gpu:1']。尝试减少GPU
我只有2个GPU,它们连接到pci端口#1和2(我无法更改,我在板上没有将它们连接到端口0所需的适当空间),在指定2个GPU时,tf将尝试获取GPU 0和GPU 1是否有意义?我可以另外说明吗
谢谢我遇到了同样的错误,我将
os.environ[CUDA\u VISIBLE\u DEVICES]='1,3'
更改为os.environ[CUDA\u VISIBLE\u 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:I
tensorflow/core/platform/cpu\u feature\u guard.cc:141]您的cpu支持
未编译此TensorFlow二进制文件以使用的说明:
SSE4.1 SSE4.2 AVX AVX2 FMA 2019-07-01 09:40:26.277398:I
tensorflow/core/common_运行时/gpu/gpu_设备。cc:1432]找到设备0
属性:名称:泰坦Xp大调:6小调:1
memoryClockRate(GHz):1.582 pciBusID:0000:03:00.0总内存:
11.90GiB自由内存:11.74GiB 2019-07-01 09:40:26.586391:I tensorflow/core/common_runtime/gpu/gpu设备。cc:1432]找到设备1
属性:名称:泰坦Xp大调:6小调:1
memoryClockRate(GHz):1.582 pCIBSID:0000:83:00.0总内存:
11.90GiB自由内存:11.74GiB 2019-07-01 09:40:26.586477:I tensorflow/core/common_runtime/gpu/gpu设备。cc:1511]添加可见
gpu设备:012019-07-0109:40:27.377910:I
tensorflow/core/common_runtime/gpu/gpu_device.cc:982]device
具有强度1边缘矩阵的互连拖缆执行器:2019-07-01
09:40:27.377970:I
tensorflow/core/common_runtime/gpu/gpu_device.cc:988]0 1
2019-07-01 09:40:27.377977:I
tensorflow/core/common_runtime/gpu/gpu_device.cc:1001]0:N
2019-07-01 09:40:27.377981:I
tensorflow/core/common_runtime/gpu/gpu_device.cc:1001]1:N
2019-07-01 09:40:27.378592:I
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:
I创建了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)
你的实际型号在哪里?从外观上看,你没有一个模型,你只是尝试初始化多个gpu模型,巧合的是,它也被命名为模型…?我有一个工作模型,模型不是问题(它在没有多个gpu的情况下工作),但我会把它添加到问题中