【发布时间】:2019-10-22 00:13:22
【问题描述】:
我想将多 GPU 中的 keras 与应用程序(例如 VGG16)一起使用。但是有一些错误。
我尝试使用单 GPU 是正确的。但是多GPU是错误的。 代码如下:
import keras
with tf.device('/cpu:0'):
input1 = keras.layers.Input(config.input_shape)
input2 = keras.layers.Input(config.input_shape)
sub_model = keras.applications.VGG16(include_top=False, weights=config.VGG_MODEL_PATH,
input_shape=config.input_shape)
output1 = sub_model(input1)
output2 = sub_model(input1)
model = keras.Model(inputs=[input1, input2], outputs=[output1, output2])
parallel_model = keras.utils.multi_gpu_model(model, gpus=3)
parallel_model.compile('sgd', loss=['mse', 'mse'])
parallel_model.fit((np.random.random([10, 128, 128, 3]), np.random.random([10, 128, 128, 3])),
(np.random.random([10, 4, 4, 512]), np.random.random([10, 4, 4, 512])))
错误信息是
Traceback (most recent call last):
File "/data00/home/liangdong.tony/PycharmProject/RetrievalCCWebVideo/AE/demo.py", line 145, in <module>
parallel_model = keras.utils.multi_gpu_model(model, gpus=3)
File "/data00/home/liangdong.tony/.local/lib/python2.7/site-packages/keras/utils/training_utils.py", line 177, in multi_gpu_model
return Model(model.inputs, merged)
File "/data00/home/liangdong.tony/.local/lib/python2.7/site-packages/keras/legacy/interfaces.py", line 87, in wrapper
return func(*args, **kwargs)
File "/data00/home/liangdong.tony/.local/lib/python2.7/site-packages/keras/engine/topology.py", line 1811, in __init__
'Layer names: ', all_names)
RuntimeError: ('The name "vgg16" is used 2 times in the model. All layer names should be unique. Layer names: ', ['input_1', 'input_2', 'lambda_1', 'lambda_2', 'lambda_3', 'lambda_4', 'lambda_5', 'lambda_6', 'model_1', 'vgg16', 'vgg16'])
【问题讨论】:
-
您必须在问题中包含完整的错误消息。
-
对不起,我忘记了,已经更新了。你以前遇到过这个问题吗?