我想在多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])))
错误消息是
^{pr2}$
我发现有一个不明智的解决办法。 有解决方案代码:
但是,我发现这个解决方案中GPU的使用率很低。在
我只是猜测,但它在你的错误日志中说“名称”vgg16“在模型中使用了2次”。在
我想如果你创建output1和output2
并将其添加到模型中,创建VGG16模型的重复层名称。 也许你可以使用另一个输入(input2)?在
也可以尝试重命名模型:
^{pr2}$如果您能提供更多代码,我可能会测试您的代码并尝试解决问题:)
This似乎也是一个类似的问题。在
希望这有帮助。在
相关问题 更多 >
编程相关推荐