gpt4 book ai didi

tensorflow - keras + scikit-learn 包装器,当 GridSearchCV 与 n_jobs >1 时似乎挂起

转载 作者:行者123 更新时间:2023-12-05 00:49:33 33 4
gpt4 key购买 nike

更新 :我必须重新编写这个问题,因为经过一些调查,我意识到这是一个不同的问题。

上下文:使用带有 scikit learn 的 kerasclassifier 包装器在 gridsearch 设置中运行 keras。系统:Ubuntu 16.04,库:anaconda 发行版 5.1、keras 2.0.9、scikitlearn 0.19.1、tensorflow 1.3.0 或 theano 0.9.0、仅使用 CPU。

代码:
我只是使用这里的代码进行测试:https://machinelearningmastery.com/use-keras-deep-learning-models-scikit-learn-python/ ,第二个示例“网格搜索深度学习模型参数”。请注意第 35 行,内容如下:

grid = GridSearchCV(estimator=model, param_grid=param_grid)

症状:当网格搜索使用 超过 1 工作(意味着 cpus?),例如,将上面 A 行上的“n_jobs”设置为“2”,下面一行:
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=2)

将导致代码无限期挂起,无论是使用 tensorflow 还是 theano,并且没有 cpu 使用(请参见附加的屏幕截图,其中创建了 5 个 python 进程,但没有一个正在使用 cpu)。

enter image description here

通过调试,它似乎是以下行 'sklearn.model_selection._search' 这会导致问题:
line 648: for parameters, (train, test) in product(candidate_params,
cv.split(X, y, groups)))

,程序挂起无法继续。

我真的很感激一些关于这意味着什么以及为什么会发生这种情况的见解。

提前致谢

最佳答案

你在使用 GPU 吗?如果是这样,您就不能让多个线程运行参数的每个变体,因为它们将无法共享 GPU。

这是一个关于如何在带有 GridsearchCV 的管道中使用 keras、sklearn 包装器的完整示例:Pipeline with a Keras Model

如果你真的想在 GridSearchCV 中有多个作业,你可以尝试限制每个作业使用的 GPU 分数(例如,如果每个作业只分配 0.5 可用的 GPU 内存,你可以同时运行 2 个作业)

看到这些问题:

  • Limit the resource usage for tensorflow backend
  • GPU memory fraction does not work in keras 2.0.9 but it works in 2.0.8
  • 关于tensorflow - keras + scikit-learn 包装器,当 GridSearchCV 与 n_jobs >1 时似乎挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47527915/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com