【问题标题】:How to configure the parameter_space with GridSearch?如何使用 Grid Search 配置参数空间?
【发布时间】:2020-03-22 04:34:10
【问题描述】:

请看下面的例子:

parameter_space = {
    'hidden_layer_sizes': [(200,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=3)

问题是要了解我的 ANN 是如何留在内部的。

我希望这个示例使用 20 个神经元作为输入层,两个隐藏层分别为 200 和 100 个神经元,以及一个带有 1 个神经元的输出层,因为我的问题是二元分类。

输入层 (20) --- 隐藏层 1 (200) --- 隐藏层 2 (100) --- 输出层 (1)

我知道在“hidden_​​layer_sizes”中只会插入隐藏层,但是我们如何指示输入和输出层呢?以及“GridSearchCV”将如何交替隐藏层中的神经元数量以找到最佳配置?

【问题讨论】:

    标签: python scikit-learn gridsearchcv mlp


    【解决方案1】:

    设置要尝试的配置列表,然后调用 gridsearch 传递对 MLP 函数的引用(带括号,mlp()):

    from sklearn import svm
    from sklearn.model_selection import GridSearchCV
    from sklearn.neural_network import MLPClassifier as mlp
    
    parameter_space = {
        'hidden_layer_sizes': [(200, 100),(100, 200),(200, 200),(100, 100)],
        'activation': ['tanh', 'relu'],
        'solver': ['sgd', 'adam'],
        'alpha': [0.0001, 0.05],
        'learning_rate': ['constant','adaptive']
    }
    clf = GridSearchCV(mlp(), parameter_space, scoring='precision_macro')
    print("Best params:")
    print(clf.best_params_)
    

    这将遍历所有 (4*2*2*2*2)=64 可能的参数组合。隐藏层大小为 (200,100) 或 (100,200) 或列表中的其他两个之一 - 如果您想要或多或少的细粒度变化,您可以修改该列表。

    您关于输入和输出层大小的问题是一个很好的问题,我也想知道何时开始使用这些东西。答案是输入向量的大小已经决定了输入层的大小(它必须是相同的大小),输出层和输出向量也是如此,因此 scikit 不需要这些层大小。可惜其他 ML 工具包没有做同样的事情!

    【讨论】:

      猜你喜欢
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多