GridSearchCV 估算我的模型非常缓慢。

3

我正在使用GridSearchCV对MLP分类器进行调参,以下是我的代码...

normalized_features.shape # (50000,784)
len(labels)               #  50000
X_train, X_test, Y_train, Y_test = train_test_split(normalized_features, labels, test_size=0.2)
mlp = MLPClassifier(max_iter=100)
parameter_space = {
    'hidden_layer_sizes': [(50,50,50), (50,100,50), (100,)],
    'activation': ['tanh', 'relu'],
    'solver': ['sgd', 'adam'],
    'alpha': [0.0001, 0.05],
    'learning_rate': ['constant','adaptive'],
}

这个阶段我卡住了,已经超过两个小时了,它仍在加载并抛出警告

最初的回答:

clf = GridSearchCV(mlp, parameter_space, n_jobs=-1, cv=10)
clf.fit(X_train, Y_train)

警告:

/usr/local/lib/python3.6/dist-packages/joblib/externals/loky/process_executor.py:706: 用户警告:当一些作业被提交给执行器时,某个工人停止了工作。这可能是由于工作超时时间太短或内存泄漏引起的。 "timeout or by a memory leak.", UserWarning

请问有谁能帮我解决这个问题并告诉我哪里出了问题! 提前感谢您。


https://github.com/ray-project/tune-sklearn - 这个软件包可以加快大规模超参数调优过程的速度。 - undefined
2个回答

2
您正在对784个特征的50000个样本进行训练(训练和验证),在参数空间上为3 x 2 x 2 x 2 x 3 = 72进行CV交叉验证,这意味着您将训练10个模型,每个模型训练72次。只需使用一组参数运行一次,就可以大致推算出设置所需的时间。肯定需要一些时间。

2
正如 @mujjiga 所提到的,Gridsearch 会为每个折叠尝试 72 种不同的参数组合,如果您有 10 个折叠,则将训练的总模型数量为 720
您可能想使用 RandomizedSearch,它将以较少的实验方式给出与 GridSearch 方法类似的结果。因此,您可以减少培训时间。
您可以在 scikit-learn 中找到 randomizedsearch 实现。
此外,您还可以通过此 link 阅读有关 gridsearch 和 randomizedsearch 的比较,并获取更多详细信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接