1

我在 MLP 分类器上使用 GridSearchCV,这是我的代码...

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:UserWarning:当一些工作被分配给执行程序时,工作人员停止了。这可能是由于工作人员超时时间过短或内存泄漏造成的。“超时或内存泄漏。”,用户警告

谁能帮我解决这个问题,让我知道我哪里出错了!先感谢您。

4

2 回答 2

1

正如@mujjiga 提到的,Gridsearch 将为72您的每个折叠尝试不同的参数组合,如果您10折叠了,则将被训练的总型号为720.

您可能想要使用 RandomizedSearch,它可以通过较少的实验为您提供与 GridSearch 方法相似的结果。所以你可以减少你的训练时间。

您可以在scikit-learnrandomizedsearch中找到实现。

您还可以通过此链接更详细地阅读网格搜索和随机搜索之间的比较。

于 2020-02-29T14:36:33.080 回答
0

您正在使用 CV的参数空间对特征50000样本进行训练(训练和验证),这意味着您每次都在训练模型。使用一组参数运行一次,您可以粗略推断设置所需的时间。这肯定需要时间。7843 x 2 x 2 x 2 x 3 = 72101072

于 2020-02-29T06:05:10.543 回答