tensorflow - 在 keras 中使用 GPU 进行多处理

标签 tensorflow keras

我需要并行计算多个深度模型并对它们的结果进行平均。使用 GPU 0 完成计算后,我的工作将永远运行。

def model_train(self, params):
    from nn_arch import nn_models
    X, y, gpu_no = params
    print("GPU NO ", gpu_no)
    with tf.device('/gpu:' + str(gpu_no)):
        model1 = nn_models.lenet5()
        early_callback = CustomCallback()
        model1.fit(X, y, batch_size=256, validation_split=0.2, callbacks=[early_callback],
                   verbose=1,
                   epochs=1)
    return model1

下面是我的主要方法。 在这种情况下,我有 2 个 GPU

def main(self, X_train, y_train, X_test, y_test):
    random_buckets = self.get_random()
    X = [X_train[random_buckets[k]] for k in sorted(random_buckets)]
    y = [y_train[random_buckets[j]] for j in sorted(random_buckets)]

    params = zip(X, y, [0, 1])
    models = pool1.map(self.model_train, params)

如何使用 Keras 并行训练多个模型。 (数据并行方法)

最佳答案

在keras中编译模型之前。添加这一行

模型 = make_parallel(模型, 2)

其中 2 是可用 GPU 的数量。

make_parallel 函数在此文件中可用。只需在您的代码中导入该文件,您的代码就会在多个 GPU 上执行。

https://github.com/kuza55/keras-extras/blob/master/utils/multi_gpu.py

make_parallel 是一个简单的函数:

  • 它会在您指定的 N 个 GPU 上实例化模型的副本
  • 它将您的批处理分成 N 个大小均匀的小批处理
  • 它将每个较小的批处理传递到相应的模型中
  • 它连接模型的输出

关于tensorflow - 在 keras 中使用 GPU 进行多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43457890/

相关文章:

python - 为什么我会出现 Keras 形状不匹配的情况?

python - 在 Keras 中实现自定义损失函数

python - 为什么在 tensorflow 中使用多 GPU 时 GPU 内存使用情况有很大不同?

python - Tensorflow卷积网络——如何计算维度(形状)?

python - 如何使用经过训练的 Keras 模型来做出新的预测?

scikit-learn - 如何在 scikit-learn 管道中绑定(bind)参数?

python - 如何在keras中测试自定义损失函数?

python - ValueError : Cannot feed value of shape (60000, ) 对于张量 'Placeholder_1:0' ,其形状为 '(60000, 1)'

image-processing - 标签在图像分割中的工作原理 [SegNet]

Keras - 分类器不从预训练模型的转移值中学习