我的具有multi_gpu_model的Keras网络仅使用1个gpu



我在尝试将Keras与三个GPU一起使用时遇到了问题。

我的伪码如下:

import keras
import keras.models as M
from keras.utils import multi_gpu_model 
i = M.Input(None,None,6) 
o1,o2,o3 = my_Network(i)
net = M.Model(inputs = i, outputs = [o1,o2,o3])
net = multi_gpu_model(net,gpus = 3) 
net.compile( ~~~~~ ) 
net.fit(~~~~~ ) 

我的代码正在训练我的网络,但是,只使用了一个GPU。

我的配置如下:

keras:2.3.1

tensorflow:2.1.0

Cuda:10.0

窗口:10

GPU:特斯拉100 x 3(VRAM:32GB x 3(

错误在哪里?

我使用以下代码解决了问题:

str = tf.distribute.MirroredStrategy(devices=["/gpu:0","/gpu:1", "/gpu:2"])
with str.scope():
epsnet = M.Model(inputs = [img_in,img_lv],outputs = [out_d,out_s,out_l])
epsnet = multi_gpu_model(epsnet,gpus=3)

希望这能给你一些启发。感谢所有回复者。

在执行fit时,必须考虑批量大小。您在这里没有显示这一点,但您需要确保给它一个可以被3整除的批量大小,以便在您的3个GPU中并行化它。例如,如果您给它的批量大小为1,它将无法在GPU之间分配培训。

您没有提供太多信息,但根据您对multi_gpu_model的执行,我没有发现任何明显的错误。

相关内容

  • 没有找到相关文章

最新更新